fscanf阅读和保存

时间:2012-09-13 13:36:00

标签: c file

我对在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  

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

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

第二关,我不知道你的意思是“将数字保存到常数”,但一般,在C中做这种事情的正确方法是读取行如果您有fgets(或getline),请使用strsepstrtoul从该行中提取单个数字。

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

答案 1 :(得分:-1)

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

如果你想阅读文件中的所有单词,你必须像这样循环它们:

while(feof(fp)==0){

fscanf(fp,"%s",buffer);
*** Do what every action you want to do with your buffer here ***
}