我对在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
有人可以帮帮我吗?
答案 0 :(得分:1)
首先,忘了你曾经听说过fscanf
。这比它的价值要麻烦得多。
第二关,我不知道你的意思是“将数字保存到常数”,但一般,在C中做这种事情的正确方法是读取行如果您有fgets
(或getline
),请使用strsep
和strtoul
从该行中提取单个数字。
第三,从风格上讲,只有一件事比在括号内部放置空格更糟糕,那就是不一致在括号和逗号内和/或周围放置空格。你将给下一个必须阅读此代码的人一个头疼的问题。
答案 1 :(得分:-1)
你现在正在做的只是读一个单词,你正在使用fscanf读取而%s读取它看到的第一个字符串。
如果你想阅读文件中的所有单词,你必须像这样循环它们:
while(feof(fp)==0){
fscanf(fp,"%s",buffer);
*** Do what every action you want to do with your buffer here ***
}