我想以特定格式读取文件,因此我使用fscanf_s和while循环。但是一旦处理fscanf_s,程序就会崩溃并出现访问冲突(0xC0000005)。
以下是代码:
FILE *fp;
errno_t err = fopen_s(&fp, "C:\\data.txt", "r");
if (err != 0)
return 0;
int minSpeed = 0;
int maxSpeed = 0;
char axis = '@';
while(!feof(fp))
{
int result = fscanf_s(fp, "%c;%d-%d\n", &axis, &minSpeed, &maxSpeed);
if (result != 3)
continue;
}
fclose(fp);
文件的内容是基于行的,例如:
-;10000-20000
X;500-1000
S;2000-2400
有人能帮我吗?
feof_s()
或者fclose_s()
?真的吗?*_s
函数比普通命名的函数更糟糕:它们需要相同的检查,让你感觉安全,但实际上并不是这样。我建议你不要使用它们,因为会产生虚假的安全感,并且在许多实现中都不可用,使得你的程序只能在可能机器的有限子集上运行。 - pmgfeof_s()
和fclose_s()
只是一个玩笑(哈哈);显然,正确的fscanf_s()调用应该是fscanf_s(fp, "%c;%d-%d\n", &axis, 1, &minSpeed, &maxSpeed);
,额外的1
是为了axis
数组的大小。不要使用*_s
函数! - pmg