gpt4 book ai didi

检查两个文件是否相同

转载 作者:行者123 更新时间:2023-11-30 14:35:42 25 4
gpt4 key购买 nike

#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>

int main()
{

int status = 0;
FILE * fPointer;
FILE * gPointer;
fPointer = fopen("file1.txt", "r");
gPointer = fopen("file2.txt", "r");

char singleLine[150];
char secondLine[150];

while(fgets(singleLine,150,fPointer)!=NULL && fgets(secondLine,150,gPoi$
{
//fgets(singleLine,150,fPointer);
//fgets(secondLine,150,gPointer);
printf("singleLine: %s\n",singleLine);
printf("secondLine: %s\n",secondLine);
if (singleLine != secondLine)
{
status = 1;
}
}
printf("final status: %d\n", status);
if (status == 0)
{
printf("same\n");
}
else if (status == 1)
{
printf("not same\n");
}
fclose(fPointer);
fclose(gPointer);
return 0;
}

两个文件的内容都是“hello”和“hello”。但由于某种原因,我得到的输出是

singleLine: hello
secondLine: hello
final status: 1

等于“不相同”。
我通过打印什么来检查 singleLinesecondLine在每次迭代中它们都是相同的。

我做错了什么?

最佳答案

以下内容并不完全像您想象的那样工作:

if (singleLine !=  secondLine)

那是因为singleLinesecondLine是数组(被视为字符串)。 C 中的等式/不等式运算符用于数组时,只需检查两个数组是否位于内存中的同一地址(即相同的变量)。在您的情况下,情况并非如此,因此您的 if 语句始终为真。

由于您将两个数组都视为字符串,因此要使用的正确函数是 strcmpstrncmp ,均在 <string.h> 中定义。这是在 C 中执行字符串比较的标准方法(函数的名称由此而来)。

在本例中,您的 if 语句应该是:

if (strcmp(singleLine, secondLine) != 0)
{
status = 1;
}

关于检查两个文件是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58383975/

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