对于 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”
(没有“”)。
我尝试过,但需要按 Enter 键三次。
有没有一种方法可以用一行输入扫描多个数组?
我只能使用stdio.h和scanf。
编辑:
这是翻译后的完整练习(原始练习是意大利语)。
复制代码顶部的这些声明。
struct person {
char name[10];
struct person * mother;
struct person * father;
} ;
typedef struct person Person;
编写一段代码,声明三个 Person 类型变量并从输入中读取:
儿子的名字(由10个字符组成,需要时添加特殊字符$)。
母亲的名字(与儿子的名字相同)。
父亲的名字(与儿子的名字相同)。
(如果父亲和母亲未知,则使用 NULL 常量)。
这将代表一个 3 人的家庭。 然后编写一个 void 函数来打印 Person 的母亲和父亲的名字。如果这些名称未知,则打印“Unknown”(检查指针是否不同于 NULL)。
对整个家庭成员调用此函数。
这是输入示例:
罗伯塔$$$安娜$$$$$$马西莫$$$
忽略练习的最后一部分,我的问题是输入由 30 个字符组成,名称数组长度为 10。我显然无法编辑名称数组的长度。
编辑: 我尝试在三个长度的数组上使用“%3s”解决方案,或者看起来工作正常,但是,如果数组的第三个插槽上有一个“\0”字符,这不应该是一个问题? p>
最佳答案
嘿 Snoopy3 堆栈溢出
不是一个完成家庭作业的平台。这里我只能通过修改你的代码来帮助你。
使用 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
关于c - C中单个文本字符串中的多个字符数组scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233879/