C语言读取TXT文件,忽略文件空格,把内容写入数组中应该怎么实现?

#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 沈票线

#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];

int read() {
FILE *fp;
int n = 0;
if((fp = fopen("1.txt","rt")) == NULL) {
printf("不能打开数据文件!\n");
return 0;
}
while(fscanf(fp,"%u%s%d%s%s",&views[n].id,views[n].name,
&views[n].code,views[n].shortname,views[n].LName) == 5)
++n;
return n;
}

追问

这样真的可以不读入空格?%s也是接受空格的啊

追答

空格被用来隔开数据,这是scanf()函数的特点,各个数据间有1个空格可多个空格都不会影响读入结果。

追问

可是%s不是这样的吧

追答

你就不能测试一下?

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-31
一行一行读出来 然后用sscanf追问

fgets一行一行读吗?sscanf怎么用啊,能提示一下吗,谢谢

C语言如何读取TXT文件并存入数组中?
1 以文本方式打开文件。2 循环用fscanf格式化输入数据到数组。3 判断fscanf的返回值,如果显示到达文件结尾,退出输入。4 关闭文件。5 使用数据。二、代码实现。设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔。代码可以写作:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...

C\/C++如何读取TXT文件的行数和把TXT文件的内容存到数组中
C语言读取TXT文件的行数并把把TXT文件的内容存到数组中,需要根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets。这里假设每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存'\\0'),选取fgets进行读取。示例代码如下:include <stdio.h>#include <stdlib.h>int main...

C语言打开一个txt文件,读取全部数据时忽略每行里的“\/\/”后面内容,然后...
include <stdio.h>int main(int argc,char *argv[]){ char a[30000]; int i; FILE *fp; if((fp=fopen("1.txt","r"))==NULL){ printf("Open the file failure...\\n"); return 0; } a[i=0]='\\n',i++;while((a[i]=fgetc(fp))!=EOF){if(a[...

如何用C语言读取txt文件中的数据到程序的数组中?
int i;fin = fopen("abc.txt","r"); \/\/ 打开文件,按读的方式打开 for (i=0;i<50;i++)fscanf(fin,"%d %d", &a[i][0], &a[i][1]); \/\/ 循环读 fclose(fin); \/\/关闭文件 for (i=0;i<50;i++) printf("%d %d\\n",a[i][0],a[i][1]); \/\/输出来看看 ...

C语言中从.txt文件中按行读取字符串至数组中,怎么写?
可以设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔写。代码如下:include int main(){ int v[100];\/\/开一个足够大的数组。int i = 0, j;FILE *fp;\/\/文件指针 fp = fopen("in.txt", "r");\/\/以文本方式打开文件。if(fp == NULL) \/\/打开文件出错。return -1;while...

C语言如何实现对txt文件的读取和写入
1、使用VS新建空工程,直接点击确定,如下所示。2、新建c文件,用于C语言编译器,输入main.c文件,如下所示。3、参考代码:include <stdio.h> int main(){ \/\/下面是写数据,将数字0~9写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w");if(fpWrite==NULL){ return 0;} for(int...

如何使用C语言从TXT文件中读取如下格式的数据并存储与数组中?
1.fopen函数打开需要读取的文本,获取该文件的文件描述符 2.使用fscan()函数对文件进行读取。3.放到二维数组其实就是读取相应格式的数据,然后对应二维数组的每个位置 例如 include "stdio.h"#define M 300#define N 50void main(){ int i,j; float a[M][N]={0}; FILE *fp; if((fp=...

c语言 如何读取txt内容到数组
int main(){ FILE *fp;if((fp=fopen("D:\\\\123.txt","r"))==NULL)\/\/判断文件是否打开成功 {\/\/读取D盘下,名为123的文本文件 printf("文件打开失败\\n");exit(0);} else printf("文件打开成功\\n");double a[N];for(int i=0;i<5;i++)\/\/读取五个浮点型数据 fscanf(fp,"%lf,"...

c语言 如何读取txt文件中的数据到一个数组并跳过逗号?
(思路是,把多余的那个逗号或者换行符按%c的方式读到junk里)include <stdio.h>int main(){int a[2][4];char junk;int i,j;FILE * fp;fp=fopen("filename.txt","r");for (i=0;i<2;i++)for (j=0;j<4;j++)fscanf(fp,"%d%c",&a[i][j],&junk);fclose(fp);\/\/your ...

C语言逐行读取txt中的数据,并保存到数组中
include <stdio.h>int main(void) { FILE *fin = fopen("file.txt", "r"); \/*假设文件名为file.txt*\/ int a[100], i; for (i = 0; i < 100; i++) { fscanf(fin, "%d", &a[i]); } fclose(fin); \/*此时已经读取完毕,可以进行接下来的处理了*\/ ...

相似回答