gpt4 book ai didi

c - 在C中: How do I terminate while loop when comparing string output to external file

转载 作者:行者123 更新时间:2023-11-30 18:01:31 25 4
gpt4 key购买 nike

(这适用于 tcsh 中的 C、Unix。)

我正在尝试将字符串写入外部文件(输出),然后将输出与文件输入进行比较。如果该文件中存在输出,我想打印“找到记录”。如果该文件中不存在输出,我想打印“未找到记录”。

我正在使用 while 循环来比较输出与输入。我有一个工作,如果找到记录,循环终止并打印“找到记录”。

我无法让“其他”部分工作。请参阅我在代码中对此的评论。

我已经阅读我的文字、笔记和谷歌搜索了 48 个小时。我似乎无法解决这个问题。

感谢您的帮助。

    /*This program opens a file, compares output to file input*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define FILE_NAME "~/MyFiles/File1"

int main() {

FILE *fp;
char *input;
char *output;
output = "MyName";
input = "new name"; /*I get a compiler error if I don't initialize input*/
int found = 0;

/*Open file, write output ("MyName") to file in order to compare below*/
fp = fopen(FILE_NAME, "a+");
fprintf(fp, "%s\n", output);
fclose(fp);

/*Testing to see what it prints, not relevant to my question other than reopening the
file to read in and compare below*/
fp = fopen(FILE_NAME, "r");
fscanf(fp, "%s", input);
printf("\n%s", input);

while (!found) {
if (strcmp(input, "MyName") == 0) {
printf("Record found.");
found = 1;
}
/*This is the part I can't get to work. I don't know what's off.*/
else {
printf("Record not found."); /*Printing this so I can see how many times it's
checking. It never terminates. How do I get it to scan through the file ONCE and then
stop?*/
fscanf(fp, "%s", input);
found = 0; /*I thought this was my loop terminator, but it has no effect.*/
}
}

fclose(fp);
return 0;

}

最佳答案

found=0;

0 在 c 中是假的。因此,如果在顶部循环

while(!found)

这将评估为真。由于您没有在 EOF 上退出循环,因此如果它不在文件中,如果输出在文件中不完全符合您的预期,那么您将永远循环。

在其他新闻中,您确实应该考虑缓冲区以及它们应该如何在 C 中分配。

关于c - 在C中: How do I terminate while loop when comparing string output to external file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777654/

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