c - 将标准输入读入给出奇怪值的结构中
问题描述
我有一个问题,我必须从用空格分隔的标准输入中读取多个用户输入(姓氏)。我只知道最大输入是 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;
}
下面是一个测试用例,其中我写了“我喜欢海滩上的海龟”,并显示了输出。
我知道为什么最后一个字没有打印出来,我的问题是为什么标准输出会给我那些奇怪的字符?任何帮助,将不胜感激 :)。
解决方案
推荐阅读
- api - 发送post请求时如何限制参数的值?
- swift - swift中文本字段alertView上未打开的数字和其他键盘
- three.js - 拖动控件问题
- docker - Vagrant - docker-compose 文件问题
- python - 破折号数据表 active_cell
- amazon-s3 - Athena 查询参数化 s3 文件夹
- c# - 动画与鼠标路径同时出现 - WPF
- microsoft-graph-api - 如何访问 Microsoft Exchange 本地安装的日历
- css - 如何在material-ui卡组件中获得相同的宽度?
- python - 仅当字典不在列表中时才将其包含在列表中