#include <stdio.h> #include <stdlib.h> #define SIZE_view 50 struct view_info { int id; char name[20]; int code; char shortname[20]; char LName[100]; }views[SIZE_view]; void read() { FILE *fp; int i; fp=("1.txt",r);//接下来本人想不到好的方法 }
这里是1.txt的内容,里面假如用fscanf格式化会读入空格,有没有什么好的方法,能把空格忽略,然后直接把其他内容读入views[i].id等等数组里面
1 哈尔滨 101 HaEB 哈大线,京哈线
2 长春 102 CHCH 哈大线,京哈线
3 沈阳 103 SHY 哈大线,京哈线
4 大连 104 DL 哈大线,京哈线
5 天津 105 TJ 京哈线,京沪线
6 北京 106 BJ 京哈线,京沪线,京广线,京福线
7 呼和浩特 107 HHHT 京西线,徐西线
8 乌鲁木齐 108 WLMQ 乌兰线
9 西宁 109 XN 京西线,徐西线
10 兰州 110 LZ 京西线,徐西线,乌兰线
11 西安 111 XA 徐西线,京昆线
12 郑州 112 ZHENGZ 京昆线,京广线,徐西线
13 徐州 113 XZH 徐西线,京沪线,京福线
14 上海 114 SHH 京沪线,南沪线,京福线
15 武汉 115 WH 京广线
16 成都 117 CHD 京昆线
17 昆明 116 KM 京昆线,昆柳线,昆福线
18 贵阳 118 GY 昆柳线,南成线,昆福线
19 株洲 119 ZHUZH 南沪线,京九线,昆福线
20 南昌 120 NCH 京福线,昆福线
21 福州 121 FZH 京福线,昆福线
22 广州 122 GUANGZ 京广线
23 深圳 123 SHZH 京广线
24 柳州 124 LZH 昆柳线,南沪线,南成线
25 南宁 125 NN 南沪线,南成线
26 赤峰 126 CHF 京赤线
27 北票 127 BP 沈票线
5
35
#include <stdio.h> #include <stdlib.h> #define SIZE_view 50 struct view_info { int id; char name[20]; int code; char shortname[20]; char LName[100]; }views[SIZE_view]; FILE *f; char buf[256]; char *p; int i, n; int main(void) { if (NULL == (f = fopen("1.txt", "r"))) { fprintf(stderr, "Can not open file : 1.txt"); return 1; } i = n = 0; while (1) { if (n == SIZE_view) break; if (NULL == fgets(buf, 256, f)) break; if ("\n" == buf[0]) continue; //空行继续 p = buf; sscanf(p, "%d%s%d%s%s", &views[n].id, views[n].name, &views[n].code, views[n].shortname, views[n].LName); n++; } do { printf("%d %s %d %s %s\n", views[i].id, views[i].name, views[i].code, views[i].shortname, views[i].LName); i++; } while (i < n); fclose(f); return 0; }