在main中,我有以下程序从文件中获取数字:
FILE *f = fopen("numbers.txt", "r");
if(f != NULL) {
char line[BUFFER_SIZE];
while(fgets(line, sizeof(line), f) != NULL) {
char *start = line;
int field;
int n;
while(sscanf(start, "%d", &field, &n) == 1) {
printf("%d \n", field);
start += n;
}
}
fclose(f);
}
如果我在此上面添加一个整数数组,例如int num [100],我收到了访问冲突。
这似乎在某种程度上会导致文件读取问题,但我现在看不清楚。
答案 0 :(得分:2)
sscanf(start, "%d", &field, &n)
你的函数调用有太多参数。
答案 1 :(得分:0)
while(sscanf(start, "%d", &field, &n)
自从我做完C以来已经有一段时间但是我不认为n
被填充为字符的长度。
直接从您的文件执行fscanf并检查返回以查看它是否有任何内容。
答案 2 :(得分:0)
您的“访问冲突”无疑来自您的变量“n”未初始化的事实。您的sscanf(start,“%d”,& field,& n)可能没有足够的格式说明符,因此只能从该sscanf设置变量'field'。这个sscanf没有触及变量n,所以它仍未被初始化。
当您将未初始化的'n'添加到指针'start'时,最终会出现无效的地址,并最终导致访问冲突错误。