C语言 文本文件中一行中有多个字符串,以空格隔开,但是有个字符串含空格,怎么读入结构体?

例如
A12 在zhe a 但是
在zhe a是一个字符串
不好意思,大概我没表达清楚
例如文本文件内容如下
A01 第一 个 首先
A02 第二 个 其次
A03 第三啊个 然后呢
其中第二列字符串有的包含一个空格,有的没有,空格也要读进去
要怎么从文本中将数据读入结构体?

第1个回答  2018-09-01
如果有空格的字符串没有特别之处,那就没有办法正确处理,因为人都分不清,机器怎么分清?如果有特殊之处,那就在输入时依据特殊标记处理一下就是了……
第2个回答  2018-09-01
没有这样做字符串分隔标识的,如果真是这样,你自己慢慢解析吧。分隔符当然要区别于其他字符,否则再加字符标识来区别分隔符是字符,还是分隔符。
第3个回答  2018-09-01
char member1[100];
char member2[100];
scanf("%s",member1); //读入A12
gets(member2); //读入在zhe a

追问

A12 在哪 里 这里
在哪 里是一个字符串 这里是另一个字符串
而且是从文本文件里读的

追答typedef struct _S
{
    char a[50];
    char b[50];
    char c[50];
}S;

int main()
{
    S s;
    scanf("%s", s.a); //A12
    scanf("%s", s.b); //在哪
    scanf("%s", s.b + strlen(s.b)); //里
    scanf("%s", s.c); //这里
    
    printf("%s\n", s.a); //A12
    printf("%s\n", s.b); //在哪里
    printf("%s\n", s.c); //这里
}

追问

不好意思,大概我没表达清楚
例如文本文件内容如下
A01 第一 个 首先
A02 第二 个 其次
A03 第三啊个 然后呢
其中第二列字符串有的包含一个空格,有的没有,空格也要读进去
要怎么从文本中将数据读入结构体?

追答

①gets读一行
②strchr找到第一个空格出现的位置a
③strrchr找到最后一个空格出现的位置b
④将字符串拆分成0-a、a-b、b-末尾三部分,保存到三个字符数组中。

追问

才知道我弄错了,不是我理解的这样,谢谢你的回答

本回答被提问者采纳
第4个回答  2018-09-05
#include <stdio.h>
#include <string.h>
int main()
{
char input[1000];
int number=0;
printf("Enter: ");
gets(input);

char *delim=" ";
char *p;
p=strtok(input,delim);
number++;
while((p=strtok(NULL,delim)))
{
number++;
}
printf("the word number is %d \n",number);
return 0;
}
相似回答