繁体   English   中英

fprintf 上的分段错误

[英]Segmentation fault on 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()更改它。

您声明了一个名为 username 的指针,其类型为 char。 但是您忘记为该指针分配内存。

username = (char*)malloc(any_size_you_want);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM