چی میشه برای Cin زیر ارور نگرفت؟ :8:
char *name[5] ;s
cin >> name[i]; s
i هم که شمارنده حلقمونه. ارور Fatal و ... میده. چرا؟
Printable View
چی میشه برای Cin زیر ارور نگرفت؟ :8:
char *name[5] ;s
cin >> name[i]; s
i هم که شمارنده حلقمونه. ارور Fatal و ... میده. چرا؟
اول باید i رو تعریف کنید.بعد توی یک حلقه ی for بذارید.
اگر متن ارور و پی کد رو بذارید بهتر میشه کمک کرد.
دوست عزیز دیگه واسه اینکه تاپیک طولانی نشه گفتم i حلقمونه. در ضمن کاراکترها از input خونده میشن و نه Output
ارور Access violation میده تو Borland C++ 5.02کد:#include<iostream.h>
int main(){
char *list[5];
for (int i=0;i<5;i++)
cin >> list[i];
return 0;
}
و توی 4.5 ارور Exception
خب اینجا چرا دیگه * گذاشتین ؟
اینو حذف کنین حله .کد:char *list[5];
این آرایه ای از اشاره گر هاست. این طوریه حافظه فقط به اندازه طول رشته از سیستم عامل گرفته میشه و نه به اندازه یه آرایه 2 بعدی که ممکنه تعدادی از خونه های حافظه خالی بمونن. حتما میدونید!!؟
میشه اینطوریه مقدار اولیه داد بهشون ولی میخوام با Cin ردیفش کرد.
یا یک آرایه ی 2 بعدی درست کنی مقادیرش رو به آرایه ای از اشاره گرها اختصاص بدی.کد:char *list[5]={
"Ali",
"Vahid",
"Saman",
};
مثلا توی یه حلقه مقادیر آرایه 2 بعدی رو که گرفتی بگی list[i]= myArray[i] s که اینطوری بدجوری حافظه به فنا میره.
اٌه مای گاد ...
فک کردم یه استرینگ می خواین بگیرین .
آخه اینجوری نمیشه که . وقتی تو این حالت از یه اشاره گر استفاده می کنین یه آرایه بدون نام تو حافظه read-only ایجاد میشه و چنین آرایه ای رو نمیشه تغییر داد که سی این کردن به معنی همون تغییر دادنه .
من فکر کردم قراره از طریق کیبورد دیتا وارد بشه و بهمین دلیل از cinاستفاده کردید.خب اینطوری که مشکل داره عزیز.معلومه ارور میگیره.
ولی اگه Read-Only بود نمیشد اینطوری بهش مقدار داد. این Code منه.
اینجا چه خبره؟کد:
#include <iostream.h>
#include <conio.h>
void Fill(char Sptr[][15]){
for (int i=0;i<5;i++)
cin >> Sptr[i];
cout <<endl;
}
void PointerFill(char **myPointer,char FilledString[][15]){
for (int j=0;j<5;j++)
myPointer[j]= FilledString[j];
}
void PrintArraysOfPointers(char *strPrinter[]){
for (int k=0;k<5;k++)
cout << strPrinter[k]<<' ';
}
int main(){
char myString[5][15];// '5' Inputs With Maximum Length Of '15'
char *list[5];//Arrays Of Pointers
Fill(myString);//Fills The Array With desired Inputs.
PointerFill(list,myString);//Copies The 2D Array To 'Arrays Of Pointer'
PrintArraysOfPointers(list);
getch();
return 0;}
مشکل اینجاست.پسر خوب تو داری اینیشیالیزیشن می کنی؟چی کار می کنی؟این آرایه باید از یجایی بخونه.شما دستور cin رو دادی.اما...نقل قول:
[PHP]void Fill(char Sptr[][15]){
for (int i=0;i<5;i++)
cin >> Sptr[i];
cout <<endl;
}[/PHP]
چی چه خبره مهندس؟
منظورم از چه خبره همون داخل Code.
اینیشالایز تا اونجایی که من میدونم یعنی هر زمان مثلا گفتی int a سریع بعدش مساوی بذاری و مقدار بهش بدی.
اما کاری که من کردم مقداردهی پس از تعریفه؛ که با Cin مشکل داره؛ ولی با کپی از آرایه مشکلی نداره. ابهام من اینجاست.
---------- Post added at 11:09 PM ---------- Previous post was at 11:07 PM ----------
در ضمن من دارم با Cin توی آرایه می نویسم. مشکلش کجاست؟