C,输入字符串的问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 23:14:04
char *str1, *str2, *str3;
printf("Input strings:\n");
scanf("%3s%3s%3s", str1, str2, str3);

这段代码什么问题?链接通过了,输入一串字母居然程序崩溃:
***.exe遇到问题需要关闭,我们对此引起的不便表示抱歉。
上下文大家就不必怀疑了,我曾把这段代码单独拿出来试验,崩溃了。
嗯嗯,应该是内存地址的问题,我再改改。我不用数组,单用数组=逃避指针啊。

char *str1, *str2, *str3;
指针没有初始化!所指向的地址不明确!
可以在使用前用malloc为其分配内存空间。
或者可以用数组!char str1[100], str2[100], str3[100];

因为没有为字符串分配内存。把char *str1, *str2, *str3;
改成下面的:
char str1[100];
char str2[100];
char str3[100];

先定义一个数组 让指针先指向数组 然后输入 或赋值 要不容易出错
参考资料
指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。

你都还没配置空间
没承受资源的能力当然会崩溃
就跟水库溃决一样