【发布时间】:2018-08-15 12:59:49
【问题描述】:
在我的程序中,我试图从文本文件中每行读取两个值。 它适用于我下面的代码,但是当我面对带有前导零的数字时,它会将每个零存储为一个值。
我希望能够阅读例如"007" 是普通的 "7",但我仍然希望能够将 "0" 读取为值。
任何人都可以帮助我改进我的代码或指出可以改进的地方/地方吗?
提前致谢
valuelist.txt
55 009
63 10
12 0
输出
counter: 0 | Value A: 55 Value B: 0
counter: 1 | Value A: 9 Value B: 0
counter: 2 | Value A: 9 Value B: 0
counter: 3 | Value A: 63 Value B: 0
counter: 4 | Value A: 10 Value B: 0
counter: 5 | Value A: 12 Value B: 0
counter: 6 | Value A: 0 Value B: 0
主要
int main(void) {
char name[] = "valuelist.txt";
unsigned int counter = 0;
unsigned int lines = 3;
unsigned int num;
unsigned int numtwo;
FILE* ff = fopen(name,"r");
if(ff == NULL) {
fprintf(stderr, "Error \n");
return -1;
}
char *tempp = (char*) malloc(lines + 1 );
while(fgets(tempp,lines+1,ff) != NULL){
sscanf(tempp,"%u %u",&num, &numtwo);
printf("counter: %u | ",counter);
printf("Value A: %u ",num);
printf("Value B: %u \n",numtwo);
counter++;
}
free(tempp);
tempp = NULL;
return 0;
}
【问题讨论】:
-
这段代码似乎和你期望的一样。请发布“valuelist.txt”的内容以及预期和实际输出。此外,此代码不会按原样编译,因为未定义
countlines、num和numtwo。 -
为什么要计算行???
-
...然后读取
lines*2字节但只有lines+1字节? -
@dbush 更新了文件 + 当前输出,认为你看到了什么问题...... – David Dabrue 刚刚编辑
-
请不要通过更改代码的相关部分来使大多数命令和答案无效,从而使您的问题成为移动目标!
标签: c text-files scanf fgets leading-zero