我必须解析文件中的数据。该文件具有以下结构:
text1.txt 1
text2.txt 2
text3.txt 4
该文件可以在here下载 我想得到text1.txt和1.所以我的代码如下:
#include <stdio.h>
void main()
{
FILE *fp= NULL;
int status= -1;
char name[100];
char *filename="test.txt";
fp= ::fopen(filename, "rt");
if (!fp)
{
printf("\Error open: \"%s\"\n\n", filename);
return;
}
do
{
int number=0;
status= fscanf(fp, "%s %d", name,number);
}
while (status!= EOF);
}
我正在使用C ++。我的问题是它在
崩溃了status= fscanf(fp, "%s %d", name,number);
错误是“访问冲突写入位置0x00000000。”。有什么问题?你能帮帮我吗?
答案 0 :(得分:2)
通过地址将要扫描的参数传递给fscanf
:
fscanf(fp, "%s %d", name, &number);
编译器可能警告过你:
warning: format ‘%d’ expects argument of type ‘int *’, but argument 4 has type ‘int’ [-Wformat=]
您的代码有未定义的行为,这是导致崩溃的原因。