1

我对在 C 中使用文件的知识为零,我正在尝试使用这些数据读取文件

050 1100               
051 5100

100 0005  

并将数字保存到常量中,如下所示:

PC   cod  IR      
\/   \/   \/     

050 --- 1 ---- 200
051 --- 5 ---- 100

   Mem[PC]
    \/

100 - 0005

问题是我不知道该怎么做。我只有从读取我的文件并将第一个数据保存到 char 缓冲区的书中读到的这段代码,或者至少我认为它是这样做的,但它不会继续处理其余数据。

#include <stdio.h>    
int main(int argc, char **argv)
{
    FILE *fp;    
    char buffer[100];

    fp = fopen("prueba.txt", "r");
    fscanf(fp, "%s", buffer);
    printf("%s", buffer);    
    fclose(fp);    

    return 0;    
 }

这是内容prueba.txt

050 1100               
051 5100

100 0005  

有人可以帮帮我吗?

4

2 回答 2

1

首先,忘记你听说过fscanf。这比它的价值要麻烦得多。

其次,我不知道“将数字保存为常量”是什么意思,但总的来说,在 C 中做这种事情的正确方法是逐行阅读fgets(或者getline如果你有的话)和然后使用strsep和从行中提取单个数字strtoul

第三,从风格上讲,只有一件事比在括号内部放置空格更糟糕,那就是不一致地在括号和逗号内部和/或周围放置空格。你会让下一个必须阅读这段代码的人头疼。

于 2012-09-13T13:46:30.057 回答
-1

您现在正在做的只是读取一个单词,您正在使用 fscanf 读取并使用 %s 读取它看到的第一个字符串。

如果你想读取文件中的所有单词,你必须像这样遍历它们:

while(feof(fp)==0){

fscanf(fp,"%s",buffer);
*** Do what every action you want to do with your buffer here ***
}
于 2012-09-13T13:46:04.347 回答