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 编辑 ]