从文件C获取行和列号

问题描述 投票:0回答:1

我有一个.txt文件,我想用C读取。每个字符都应该是一个col,每行应该是一行。我想将行和列的数量存储在一个int变量中。我是这样做的。我的行号是正确的,但我的列是0。

...

int rows_i = 0;
int cols_i = 0, cols = 0;

FILE* file = fopen(file_name, "r");

    if (file) {
        while ((c = fgetc(file)) != EOF) {
            if (c == '\n') {            
                break;
            }else if (c !='\0') {         
                rows_i++;
            } else {
                cols_i++;
                if(cols_i> cols){
                    cols = cols_i;
                    cols_i = 0;
                }
            }
        }
    } else {
        printf("No such file!");
        return ...;
    }
....

知道为什么会这样吗?

我的行输出正确。 cols的输出始终为0。

c file row col
1个回答
0
投票

根据您的代码,您的输出是正确的。没有任何错误。看这里:-

while ((c = fgetc(file)) != EOF) {
            if (c == '\n') {            
                break;
            }else if (c !='\0') {         
                rows_i++;
            } else {
                cols_i++;
                if(cols_i> cols){
                    cols = cols_i;
                    cols_i = 0;
                }
            }
        }

在[C0行中],您要为不是null字符的每个字符增加else if (c !='\0') rows_i++;。如果要计算rows_i++rows,请修改此部分:-

cols

if (c == '\n') {            
                break;
            }else if (c !='\0') {         
                rows_i++;
            } else {
                cols_i++;
                if(cols_i> cols){
                    cols = cols_i;
                    cols_i = 0;
                }
            }
© www.soinside.com 2019 - 2024. All rights reserved.