[英]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.