gpt4 book ai didi

c - C中单个文本字符串中的多个字符数组scanf

转载 作者:行者123 更新时间:2023-11-30 16:30:19 25 4
gpt4 key购买 nike

对于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com