我有一个.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。
根据您的代码,您的输出是正确的。没有任何错误。看这里:-
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;
}
}