gpt4 book ai didi

c - 搜索文件时发生访问冲突

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:26 25 4
gpt4 key购买 nike

这是我在文件中搜索术语的算法。

void ricerca_file(char* frase){

char* prelievo = "";
file = fopen("*userpath*\\file.bin", "rb");
while((fgets(prelievo, sizeof(prelievo), file)) != NULL){
if((strstr(prelievo, frase)) != NULL)
printf("frase trovata!\n");
}

fclose(file);
printf("%s", prelievo);}

我以这种方式询问frase的输入:

char* frase = "";
printf("insert the term that you want to search..");
scanf("%s", frase);

然后我调用这个函数:

ricerca_file(frase);

编译器在我写入输入(例如数字 2)后给我这个错误:

prove1.exe: 0xC0000005: Access violation writing location 0x00F67BC3.

If there is a handler for this exception, the program may be safely continued.

我做错了什么?

如果不清楚,我正在学习。但我真的不知道如何管理将术语搜索到文件中。我猜想使用这种算法我可能会错过很多匹配项,因为如果我搜索“hello”,如果我有一个包含文本“abchelloabc”的文件,strstr 函数每个循环移动 5 个字符,他将首先找到“abche” “并且不会找到任何东西,而在第一个循环之后它将转到“lloab”部分,然后是“c”。我认为它是这样工作的,这是错误的吗?

最佳答案

prelievo 指向一个字符串文字。这是无法写入的常量数据。 sizeof(prelievo) 将是 2 或 4(或您系统上的任何大小指针),这不是您想要的。

您需要将 prelievo 指向可以修改的字符数组:

char prelievo[1000];

同样的问题和解决方案适用于frase:

char frase[1000];

关于c - 搜索文件时发生访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32184541/

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