我有这段简单的代码:
void create(){
char *username;
FILE *fptr;
fptr = fopen("~/retele/PROIECT/user.txt", "w");
printf("Type username: ");
scanf("%s", username);
fprintf(fptr, "%s\n", username);
fclose(fptr);
} 但我不明白,为什么会出现细分错误。
在此刻:
scanf("%s", username);
指针变量username未初始化,它指向不可预测的内存部分。您基本上是在说“请将输入内容写到内存中的任何地方”。并且不要为系统抱怨而感到惊讶,实际上,您应该感到自己很幸运,因为它抱怨,调试可能的反应要困难得多。 (您也忽略了scanf的返回值,这将是系统向您提供有关其他失败方法的信息的唯一方法,如您所期望的那样。)指针尤其不会指向可用于此目的的任何内存区域存储输入。 您可以使用更改它malloc()。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。