在c编程中使用循环和scanf的字符串数组
问题描述:
我想使用scanf将数据放在数组中,如下面的int值。在c编程中使用循环和scanf的字符串数组
int main(){
int size=5;
int marks[size];
int x;
for(x=0; x<size; x++){
scanf("%d", &marks[x]);
}
for(x=0; x<size; x++){
printf("The Element at %d is %d\n", x, marks[x]);
}
getch();
return 0;
}
上面的代码是罚款和工作,但我想用同样的处理字符串数组像下面的例子,但它不工作。
int main(){
int size=5;
char *name[size];
int x;
for(x=0; x<size; x++){
scanf("%s", name[x]);
}
for(x=0; x<size; x++){
printf("The Element at %s is %s\n", x, name[x]);
}
getch();
return 0;
}
答
您没有分配内存来保存您的字符串。做
for(x=0; x<size; x++){
name[x] = (char*)malloc((size_t)64);
scanf("%s", name[x]);
printf("<one>\n");
}
'char * name [size];'显然不是你想象的那么......'char *'是一个指向字符串的指针,但是你必须先让它指向一些分配的内存,然后才能将其用于scanf。 scanf不会为您分配内存。 –