繁体   English   中英

带有fscanf()的C程序神秘地停止工作

[英]C Program with fscanf() mysteriously stops working

我有一个名为test.c的程序,以及一个名为test.in的输入文件。 我正在尝试从输入文件中读取两个字符串,并将它们输出到控制台。 我正在运行Windows 7,但正在使用gcc与MinGW进行编译。

这是我的文件test.c:

#include <stdio.h>
main() {

    FILE *fin = fopen ("test.in", "r");
    char  *one, *two;

    fscanf(fin, "%s %s", one, two);
    printf("%s\n%s", one, two);

    fclose(fin);
    return 0;
}

这是我的文件test.in:

ONE
TWO

我去MinGW,运行“ gcc -o test.exe test.c”,一切正常,但是当我运行test.exe时,弹出窗口显示“ test.exe停止工作。Windows试图找到解决问题的方法...”

有人知道为什么是这样吗?

fscanf正在写入传递给它的未初始化指针。 其影响是不确定的,但可能会导致崩溃。 您需要在调用之前分配char数组:

#define MAX_LEN (32) /* change this as required */
char one[MAX_LEN];
char two[MAX_LEN];
fscanf(fin, "%s %s", one, two);

您有指向chars的指针,但尚未分配任何内存来存储字符串。

尝试使用字符数组。

代替char* one ,必须有char one[100]或其他一些数字。 并且用户输入的字母不得超过one字母的大小(对于字符串终止符,请减去-1)。 当前,代码正在写入内存中的某个随机位置。 在这种随机情况下,任何事情都可能发生。

暂无
暂无

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

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