我试图将一个字符串存储在声明为char *name[2];
的变量中。我正在使用scanf()
从用户输入中获取值。到目前为止,这是我的代码,目前无效:
#include <stdio.h>
#include <stdlib.h>
int main()
{ char *name[2];
scanf("%s",name[0]);
printf("%s",name[0]);
return 0;
}
答案 0 :(得分:2)
您尚未为实际字符串分配任何存储空间 - char *name[2]
只是两个未初始化指针的数组。尝试:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name[2][80];
scanf("%s", name[0]);
printf("%s", name[0]);
return 0;
}
或者,如果确实需要char *name[2]
,那么您可以动态分配内存:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *name[2];
name[0] = malloc(80); // allocate memory for name[0] (NB: name[1] left uninitialised)
scanf("%s", name[0]);
printf("%s", name[0]);
free(name[0]); // free memory allocated for name[0]
return 0;
}
答案 1 :(得分:0)
char *name[2];
你有两个类型为char
使用malloc()
或其任何系列元素为指针分配内存。
name[0] = malloc(20);