несколько массивов charf scanf в одной строке текста в C

Для упражнения в C мне нужно поместить три имени в три разных массива: #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 ); вернуть 0 ; }, но ввод трех имен находится в одной строке.

struct person {
    char name[10];
    struct person * mother;
    struct person * father;
} ;
typedef struct person Person;

Вход будет в одной строке следующим образом: «aaabbbccc»
(без «»).

Я попытался с этим, но мне нужно нажать три раза.

Есть ли способ сканировать более одного массива с одной строкой ввода?

Я могу использовать только stdio.h и scanf.

редактировать:

Это полное упражнение, переведенное (оригинальное было на итальянском языке).

Скопируйте эти объявления в верхней части кода.

Stack overflow

напишите код, который объявляет три переменные типа Person и считывает их с ввода:

Имя сына (составленное 10 символами, при необходимости добавляет специальный символ $).

Имя матери (то же, что и у сына).

Имя фатье (то же, что и у сына).

(используйте NULL constant, если отец и мать неизвестны).

Это будет семья из 3 человек. Затем напишите функцию void, которая печатает имя матери и отца. Если эти имена неизвестны, напечатайте «Неизвестно» (проверьте, что указатель отличается от NULL).

Вызовите эту функцию для всех членов семьи.

Это входной пример:

Roberta Анна $$$$$$ $$$ $$$ Massimo

Игнорируя последнюю часть упражнения, моя проблема заключается в том, что ввод выполняется с помощью 30 символов, а длина массива имен - 10. Я, очевидно, не могу отредактировать длину массива имен.

edit: Я попытался с решением «% 3s» на трех временных массивах и, похоже, работает нормально, но если в третьем слоте массива есть символ « 0», это не должно быть проблемой anche?

c,arrays,char,scanf,

0

Ответов: 1


0

Hey Snoopy3 charне является платформой для выполнения ваших домашних работ. Здесь я могу только помочь вам, изменив код.

Вы можете иметь несколько charмассивов scanf()в виде одной строки текста в C с использованием спецификатора формата в 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] = '';
    }
    if (b[i] == '$')
    {
      b[i] = '';
    }
    if (c[i] == '$')
    {
      c[i] = '';
    }
  }

  printf(" 
 %s ", a);
  printf("%s ", b);
  printf("%s", c);

  return 0;
}

Выход :-

Roberta$$$Anna$$$$$$Massimo$$$

 Roberta Anna Massimo
с, массивы, символ, зсапЕ,
Похожие вопросы