通过char比较两个文件char - C

时间:2016-10-22 12:24:41

标签: c pointers char feof

我有一个具体的问题。我必须从两个文件中读取字符串并将它们与char进行比较,并告诉它哪一行是差异,以及它们有多少个字符。我已经制作了指针和所有东西,但问题是当它涉及到第一个文件的末尾时(它需要只读取较短文件的长度)我无法比较最后一个String因为我的for循环直到'\ n',在最后一行没有\ n。但另一方面,如果我把'\ 0'放在for循环中,它会给我一个错误的结果,因为它也将'\ n'计为char。我该如何处理这个问题?建议?我不想使用strcmp(),因为我需要计算char差异,还有一些其他条件需要实现。这是我的问题:

while(!feof(fPointer)){
    zeichnen = 0;
    fgets(singleLine, 150, fPointer);
    fgets(singleLine2, 150, fPointer2);
    length = strlen(singleLine);            // save the length of each row, in order to compare them
    length2 = strlen(singleLine2);
    if(length <= length2){
        for(i=0; singleLine[i] != '\n'; i++){
                singleLine[i] = tolower(singleLine[i]);
                singleLine2[i] = tolower(singleLine2[i]);
            if(singleLine[i] != singleLine2[i]){
                     zeichnen++;
                }
        }
        printf("Zeile: %d \t Zeichnen: %d\n", zeile, zeichnen);   // row, char

1 个答案:

答案 0 :(得分:0)

function reverseCase(input) {
    var output = []
    for(var char in input) {
        var character = input[char]
        if(character == character.toUpperCase())
            output.push(character.toLowerCase())
        else
            output.push(character.toUpperCase())
    }
    return output.join('')
}

替代方法是使用逻辑和运算符来测试for循环条件部分中的两个或多个条件。

从fgets手册页:

  

char * fgets(char * s,int size,FILE * stream);

     

fgets()成功时返回 s ,错误时或文件结束时返回NULL   在没有读取任何字符时发生。

所以你应该有while(true)循环并检查两个fgets返回输入结束的值。