簡體   English   中英

C中單個文本字符串中的多個char數組scanf

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM