使用fscanf从文件读取数据后程序崩溃

时间:2016-06-20 15:36:30

标签: c++ visual-c++

我编写了一个简单的程序来读取文本文件的内容,然后用cl.exe(visual studio编译器)编译它。程序编译,当我运行它时,它正常启动,当它经过读取和打印数据的那一刻它就会残酷地崩溃......这是我的代码:

#include <iostream> 
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <fstream>
#include <string>


int main (int argc, char *argv[]) 
{
char filename[256];
char d1[9]; 
char d2[8];

if (argc > 1) //lecture de l'argument
strcpy(filename, argv[1]);
    else {
        printf("Usage: read_file");
        return 0;
    }

FILE *f = fopen(filename, "r");
if (f == NULL) {
  printf("Cannot find file \'%s\'\n", filename);
  return 0;
}

printf("file opened\n");

rewind(f);
fscanf(f, "%s %s", d1, d2);

printf("%s %s",d1,d2);
fclose(f);

return 1;
}

当我用gcc编译它时,它工作得很好。问题是,我需要使用visual studio编译器运行...

1 个答案:

答案 0 :(得分:6)

首先,您应该已经发布了输入示例。

无论如何,正如其他人所说,d1和d2太小而且没有存储C-Null终结符。只需将它们放大(d1 [10],d2 [9])。

最后,您使用c ++进行编程,因此我建议您使用c ++库。你的代码会更简单,不会混用c和c ++。

最好的问候。