【问题标题】:C - Read file and count rows and columnsC - 读取文件并计算行数和列数
【发布时间】:2016-02-11 19:54:54
【问题描述】:
  • 我正在尝试创建一个函数来读取文件
  • 它应该计算 rowscolumns
  • 将全局变量设置为新读入的行和列

我的问题是我可以读取行,但我似乎无法正确读取列。

文件: http://collabedit.com/qjytg

谁能帮忙>

matrix: 
#########
#       #
#       #
#       #
#       #
#########


#include <stdio.h>

void read_file(const char *file_name);

size_t rows = 10; 
size_t cols = 20; 

int main(int argc, char *argv[]) {
    //function call

}

void read_file(const char *file_name) {
    FILE *myfile = fopen(file_name, "r");
    int newRows = 0; 
    int newCols = 0; 
    char ch;

    while(!feof(myfile)) {
        ch = fgetc(file);
        if(ch == '\n') {
            newRows++; 
        } else {
            newCols++;
        }
    }
    rows = newRows; 
    cols = newCols; 
}

【问题讨论】:

  • 你能指定你想读入的文件的格式吗?用什么分隔列?
  • 它们正是上面显示的矩阵的方式。 --> 我会附上一个文件
  • 请阅读一些书籍(见stackoverflow.com/questions/388242/…)。我觉得,回答这个问题不好。
  • 当您开始阅读新行时,您不会将列设置回 0。
  • 我建议你阅读一些现有的examples on stack overflow。结果是在网上搜索“stackoverflow c++读取文件矩阵”找到的。

标签: c++ c file count


【解决方案1】:

好的,当您找到新行时,这是您必须躲避的小技巧或问题。您必须将列数设为 0。这可能是您错过了。将if 块替换为下面的块,它应该可以正常工作

if(ch == '\n') 
{
    newRows++; 
    cols=newCols;
    newCols=0;
}

fgetc 行也有文件名错误

ch = fgetc(myfile);

【讨论】:

  • @DieterLücking 我在哪里指定错了?
  • 你没有,但错过了
  • 虽然,我想不要让我用建议来填写答案。我只是指定了使程序正常工作的最低限度的东西。无论如何谢谢@DieterLücking
猜你喜欢
  • 2021-02-22
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
相关资源
最近更新 更多