[英]Reading char arrays using pointers
我正在尝试从键盘读取一些char
arrays ,但每次程序崩溃时。
我想知道如何从键盘舒适地输入和存储char
arrays。
int main()
{
int i;
char *days[7];
for(i=0;i<7;i++)
{
scanf("%s", days[i]);
}
for(i=0;i<7;i++)
{
printf("%s\n", days[i]);
}
return 0;
}
char *days[7]
声明一个指针数组。 除非使用有效地址初始化,否则它们指向无效的 memory 位置。 因此,当您想写信给它们时,它们会调用未定义的行为。
在使用它们之前,您需要确保它们指向有效的 memory(位置)。
Yuo 声明了一个指向char
的指针,但这些指针不引用有效的 memory。
您需要为他们分配 memory :
int main(void)
int i;
char *days[7];
for(i=0;i<7;i++)
{
days[i] = malloc(MAXLENGTH);
scanf("%15s", days[i]);
}
for(i=0;i<7;i++)
{
printf("%s\n", days[i]);
free(days[i]);
}
return 0;
}
或者你可以
int main(void)
{
int i;
char days[7][MAXLENGTH];
for(i=0;i<7;i++)
{
scanf("%15s", days[i]);
}
for(i=0;i<7;i++)
{
printf("%s\n", days[i]);
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.