首页 > 解决方案 > 将标准输入读入给出奇怪值的结构中

问题描述

我有一个问题,我必须从用空格分隔的标准输入中读取多个用户输入(姓氏)。我只知道最大输入是 10,但对于测试用例,它们的范围可以是 0-10 输入。我的工作是将文本与空白区分开并保存姓氏以供以后操作。

来自标准输入的用户输入示例

史密斯保罗乔

然后我必须将“Smith”、“Paul”和“Joe”存储在数组中,以便以后进行操作。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct name{
    char name[100];
};

int main (){

    char user[100];
    int length,i;
    int counter = 0;
    int start = 0;

    fgets(user,sizeof(user),stdin);
    struct name lname[10];
    length = strlen(user);

    for(i = 0; i < length; i++){

        if(user[i]==' '){

         strncpy(lname[counter].name, user+start,i -start);
         printf("%s\n",lname[counter].name);
            start = i+1;
            counter++;
        }

    }

    return 0;
}

下面是一个测试用例,其中我写了“我喜欢海滩上的海龟”,并显示了输出。 处理错误

我知道为什么最后一个字没有打印出来,我的问题是为什么标准输出会给我那些奇怪的字符?任何帮助,将不胜感激 :)。

标签: cinputstructstdin

解决方案


推荐阅读