【问题标题】:How can I read and process this kind of file [closed]我怎样才能读取和处理这种文件[关闭]
【发布时间】:2013-10-30 01:24:12
【问题描述】:
I 12 0

I 9 1

I 26 0

I 25 2

B 26

P 0

R 25

A

所以,我需要做的是读取一个包含这些字符/数字的文件,并且每当我遇到一个字母时,我都会调用一个函数来处理字母后面的任何内容(也就是数字)。 例如: 在阅读“我”时,我必须调用该函数来INSERT跳过列表的某个级别中的某个数字;或者在阅读B时,需要在Skip List等中搜索特定的数字。

问题是我真的不擅长从文件中读取,你们能启发我吗?

【问题讨论】:

  • 你可以看看函数 strtok() 来解析输入行
  • 到目前为止您尝试过什么?让别人直接贴出具体操作方法的代码不会让你变得更好。
  • 说真的,怎么会不擅长读取文件呢?如果您不知道如何使用 C,然后转到您最喜欢的搜索引擎,然后输入:“file IO with C”并阅读前几篇教程.这是您学习的唯一方法...
  • 谢谢 Anand,使用 strtok() 是个好主意,我会试试的!
  • 在解析方面,C 也远非最佳选择。除非明确规定为要求,否则我会避免使用它。

标签: c io


【解决方案1】:

你可以用c中的文件操作来做到这一点, 我只是给你提示,

FILE *pFilePtr; // file pointer(handle of file)

pFilePtr = fopen(argv[1],"r"); 

//define buffer to store data read line by line data
char buf[32]={0};

//Now you can run a while loop to read entire file

用 fread() 获取整个第一行(直到 '\n')

while(!feof(pFilePtr))

{

if(NULL != fgets(buf,32,pFilePtr))

// perform string operation on buffer to extract letters and digits

// and according to that call functions you need

}

【讨论】:

  • 感谢您的建议,现在将尝试完成程序。
  • 一点 - 不要使用 feof 作为循环条件。 feof 直到 您尝试读取文件末尾之后才会返回 true,因此您的循环将执行一次太多。请改用fgets 的结果作为循环条件。
【解决方案2】:
#include <stdio.h>
#include <string.h>

int main(void) {

    FILE *fptr;
    char mystring[20];
    int number;
    fptr = fopen("Input.txt", "r");

    while(fscanf(fptr , "%s %d", mystring, &number) !=  EOF) {
        printf("%s %d\n", mystring, number);

        if(strcmp(mystring, "I") == 0) { 
            printf("Implement the reqd function here\n");
        }
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多