开发者社区> 问答> 正文

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);

} 但我不明白,为什么会出现细分错误。

展开
收起
祖安文状元 2020-01-16 17:41:27 624 0
1 条回答
写回答
取消 提交回答
  • 在此刻:

    scanf("%s", username);
    
    

    指针变量username未初始化,它指向不可预测的内存部分。您基本上是在说“请将输入内容写到内存中的任何地方”。并且不要为系统抱怨而感到惊讶,实际上,您应该感到自己很幸运,因为它抱怨,调试可能的反应要困难得多。 (您也忽略了scanf的返回值,这将是系统向您提供有关其他失败方法的信息的唯一方法,如您所期望的那样。)指针尤其不会指向可用于此目的的任何内存区域存储输入。 您可以使用更改它malloc()。

    2020-01-16 17:41:35
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载