c - fprintf 上的分段错误
问题描述
我有这段简单的代码:
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()
.
推荐阅读
- ssis - SSIS 脚本组件 - 无法加载文件或程序集 Microsoft.IdentityModel.Clients.ActiveDirectory 版本 = 2.29.0.1078 或其依赖项之一
- java - Java while(条件未达到)??为什么
- c++ - 类与结构的 C++ 效率
- ios - Swift pod 依赖 Firebase,pod spec lint 错误
- laravel - 如何将 nanoid 包从 npm 导入 Laravel?
- html - 具有最大列数的 CSS Grid 具有动态子项
- node.js - 打字稿覆盖 .env 文件设置
- ruby-on-rails - 无法将未经许可的参数转换为哈希
- node.js - api 调用受到另一个 api 调用验证的影响
- http - okhttp 发送错误 HTTP 消息,多个请求标头?