fscanf 文件读取 信息到结构体发生错位
程序代码:
#pragma warning(disable:4996)
#define _CRT_CPP_OVERLOADS_STANDARD_NAMES 1
#include "stdio.h"
struct test
{
int i;
char s[81];
} test[10];
int main()
{
FILE *fp = fopen("1.txt", "r");
int t = 0;
while (!feof(fp))
{
fscanf(fp, "%d%s\n", &t, test[t].s);
test[t].i = t;
}
t = 0;
while (t < 5)
{
printf("%d %s \n", test[t].i, test[t].s);
++t;
}
return 0;
}文件1.txt 内容是
2 aa
3 bb
4 cc
输出结果是:
0 aa
0
2 bb
3 cc
4
我的目的是,将读取到的每行数据读入到 以每行数据第一部分的数 为下标的数组元素里,并将该下标的值赋给该结构体元素的成员i。
但是每次都发生读取错位,具体是aa所对应元素与循环外的t的初始值相对应,但i的值却始终为0, bb对应文件上一行的2, cc对应上一行的3 ,4则对应<NULL>。。。 说不清楚
代码很短,但实在找不出原因,另外,如果将%d%s 分别用两个fscanf()读取就正常了,为什么放在一起会出现这样的原因???跪求解答啊!!!
[ 本帖最后由 黄昏黄昏 于 2013-7-8 20:53 编辑 ]










。
