Попытка назначить набор символов для строки - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь сохранить набор A и B в определенном порядке в строку, но не смог.

char String[100];
char choc_type;    
int F=0,L,i,j,choc_num,N; //F=First, L=Last
scanf("%d",&N);
for(i=0;i<N;i++)
{              //choc_type is 'A' or 'B' and choc_num is no.of A's or B's        
    scanf("%d %c",&choc_num,&choc_type);
    L=F+choc_num;
    for(j=F;j<L;j++)
    {
        if(choc_type=='A')
        String[j]='A';          //is this a right way to assign character
        else if(choc_type=='B')
        String[j]='B';
     }
     F=L;
     L=L+choc_num;
 } 
printf("%s",String);
getch();
}          

1 Ответ

0 голосов
/ 02 января 2019

Вы должны передать адрес choc_type в scanf():

scanf("%d %c",&choc_num, &choc_type);
                         ^

В C строки на самом деле являются одномерным массивом символов, оканчивающимся нулевым символом '\0', и вы не добавление нулевого символа в массив String после его заполнения.После внешнего цикла for вы должны выполнить:

String[F] = '\0';

В вашем коде есть ряд улучшений, например, вы должны сделать некоторую проверку вводимых пользователем данных, проверить возвращаемое значение scanf() и т. Д..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...