我编写了一个简单的程序来读取文本文件的内容,然后用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编译器运行...
答案 0 :(得分:6)
首先,您应该已经发布了输入示例。
无论如何,正如其他人所说,d1和d2太小而且没有存储C-Null终结符。只需将它们放大(d1 [10],d2 [9])。
最后,您使用c ++进行编程,因此我建议您使用c ++库。你的代码会更简单,不会混用c和c ++。
最好的问候。