gpt4 book ai didi

c - Parser.exe 中的 (ntdll.dll) 抛出异常 : Access violation reading location

转载 作者:行者123 更新时间:2023-11-30 19:51:41 24 4
gpt4 key购买 nike

所以,这是迄今为止困扰我的章节

void CNCread(fPointer){
printf("\n");
fPointer = fopen ("CNCG.txt", "r");
char line[30];
while(!feof(fPointer)){
fgets( line, 150, fPointer);
puts(line);
}
fclose (fPointer);
return;
}

编译、运行并执行此函数后出现以下错误:

Parser.exe 中的 0x00007FFCA1DEEAC5 (ntdll.dll) 处抛出异常:0xC0000005:读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

我刚刚将此项目从 Code::Blocks 转换为 Visual Studio 2015,添加了legacy_stdio_definitions.lib 等,所以这也不是问题,但代码在 code::blocks 上运行良好。提前感谢大家。

最佳答案

首先,char line[30] 最多可以包含 30 个字符,但是您尝试通过执行 fgets( line , 150, fPointer);.

此外,您没有检查 fopen 是否成功或失败。您还应该检查 fgets 是否成功或失败。

此外,您可以在函数内声明 fPointer,而不是将其作为函数参数。它的类型应该是FILE *

void CNCread(/* fPointer */){
printf("\n");
FILE *fPointer = fopen ("CNCG.txt", "r");

/* Check if fopen succeded */
if (fPointer == NULL) {
fprintf(stderr, "Error: Cannot open file to read\n");
/* Some code */
return;
}

char line[30];
while(!feof(fPointer)){
/* You are writing more chars to line than its capacity */
/* fgets( line, 150, fPointer); */
/* Change it to write at max 30 chars to line */
if (fgets( line, 30, fPointer) != NULL)
puts(line);
}
if (fclose(fPointer) == EOF) {
fprintf(stderr, "Error: Cannot close the file after reading\n");
/* Some code */
return;
}

return;
}

关于c - Parser.exe 中的 (ntdll.dll) 抛出异常 : Access violation reading location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38843626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com