[英]multiple char arrays scanf in a single string of text in C
对于C语言的练习,我需要将三个名称放入三个不同的char数组中,但是三个名称的输入在同一行上。
#include <stdio.h>
int main(){
char a[3], b[3], c[3];
scanf("%s%s%s", a, b, c);
printf(" \n %s ", a);
printf("%s ", b);
printf("%s", c);
return 0;
}
输入将在单行中,如下所示:“ aaabbbccc”
(不包含“”)。
我尝试过,但是需要按回车三下。
有没有一种方法可以用单行输入来扫描多个阵列?
我只能使用stdio.h和scanf。
编辑:
这是完整的练习翻译(原始练习是意大利语)。
将这些声明复制到代码的顶部。
struct person {
char name[10];
struct person * mother;
struct person * father;
} ;
typedef struct person Person;
编写一个声明三个Person类型变量并从输入中读取的代码:
儿子的名字(由10个字符组成,必要时添加特殊字符$)。
母亲的名字(与儿子的名字相同)。
胖子的名字(与儿子的名字相同)。
(如果父亲和母亲未知,则使用NULL常量)。
这将代表一个3人的家庭。 然后编写一个虚函数,打印一个人的父母的名字。 如果这些名称未知,则打印“未知”(检查指针是否不同于NULL)。
在整个家庭成员上调用此函数。
这是输入示例:
罗伯塔$$$安娜$$$$$ Massimo $$$
忽略练习的最后一部分,我的问题是输入由30个字符组成,并且名称数组的长度为10。我显然不能编辑名称数组的长度。
编辑:我尝试在三个长度较大的数组上使用“%3s”解决方案,或者看起来可以正常工作,但是,如果数组的第三个插槽上有一个'\\ 0'字符,这应该不是问题吗?
嘿,Snoopy3 Stack overflow
不是完成家庭作业的平台。 在这里,我只能通过修改代码来帮助您。
您可以使用scanf()
中的格式说明符在C中的单个文本字符串中具有多个char
数组scanf()
。
试试这个代码:-
#include <stdio.h>
int main()
{
char a[10], b[10], c[10];
scanf("%10s%10s%10s", a, b, c); // total 30 chars 10 per each string.
for (int i = 0; i < 10; i++) // removing rest '$';
{
if (a[i] == '$')
{
a[i] = '\0';
}
if (b[i] == '$')
{
b[i] = '\0';
}
if (c[i] == '$')
{
c[i] = '\0';
}
}
printf(" \n %s ", a);
printf("%s ", b);
printf("%s", c);
return 0;
}
输出:-
Roberta$$$Anna$$$$$$Massimo$$$
Roberta Anna Massimo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.