作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(这适用于 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/
我是一名优秀的程序员,十分优秀!