Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为Unix编写cmp之类的实用程序来处理可选的[SKIP]参数_C++_C_Linux_Unix_While Loop - Fatal编程技术网

C++ 为Unix编写cmp之类的实用程序来处理可选的[SKIP]参数

C++ 为Unix编写cmp之类的实用程序来处理可选的[SKIP]参数,c++,c,linux,unix,while-loop,C++,C,Linux,Unix,While Loop,我需要为C中的Unix创建类似于cmp的实用程序。 cmp比较两个文件并输出不同的第一个字符数 cmp [-s] file1 file2 [SKIP1] [SKIP2] 我每件事都做得很好,但由于跳槽,我遇到了一些麻烦。 SKIP1用于n个字符后的比较file1,而SKIP2用于n个字符后的比较file2 代码的一部分: ... while ((fgets(filebuff, MAXLINE, file1)) != NULL && (fgets(filebuf

我需要为C中的Unix创建类似于
cmp
的实用程序。 cmp比较两个文件并输出不同的第一个字符数

cmp [-s] file1 file2 [SKIP1] [SKIP2]
我每件事都做得很好,但由于跳槽,我遇到了一些麻烦。
SKIP1
用于n个字符后的比较
file1
,而
SKIP2
用于n个字符后的比较
file2

代码的一部分:

...
while ((fgets(filebuff,  MAXLINE, file1)) != NULL && 
       (fgets(filebuff2, MAXLINE, file2)) != NULL)
{
    ++linepos;
    same = compare_str(filebuff, filebuff2); // my function that return 0 if equal and change pos of first diff element 
    if (same != 0)
    {
        fclose(file1);
        fclose(file2);
        printf("differ: char %i, line %i\n",charpos,linepos);
        return 1;
    }
}
fclose(file1);
fclose(file2);
return 0;
我不知道如何与从SKIP1或SKIP2开始进行比较

while ((fgets(filebuff, MAXLINE, file1))!=NULL && (fgets(filebuff2, MAXLINE, file2)) != NULL)

这段代码逐行读取文件,并从发送到函数的每个文件中读取两行。我不想更改比较函数。我需要把已经剪好的绳子送过去。可能从n位置开始使用
fgets()
循环,但我不知道如何开始

你考虑调用<代码> fStuts<代码>吗?你可能不应该使用<代码> fgScript()<代码>(你应该使用<代码> Frad())/>代码>。一个主要原因是
cmp
用于比较二进制文件,而二进制数据中经常出现的空值确实会把工作搞砸。您需要修改比较代码,以获取每个缓冲区的数据长度。使用
fseek()
是其余大部分答案。