Я не могу узнать причину неправильного поведения приведенного ниже кода. Это простой код для приема символов до тех пор, пока не будет введен ни один из них, либо пока не будет достигнут размер массива, а затем напечатайте символы, считанные с клавиатуры. Похоже, что часть чтения в порядке. Также, если я ввещу * до того, как будет достигнут размер массива, все будет в порядке. Но если я не вхожу * и дождался, пока размер массива не достигнут в части чтения, у меня возникнут проблемы. Во время печати он печатает символы, которые читаются, но после этого печатается какой-то мусор. Отлаживается через отладчик, но цикл не прерывается, когда индекс равен 3 или более.while loop не нарушается
int main()
{
char myStr [3];
unsigned int index=0;
printf("Enter Single characters. Enter * to stop\n");
do
{
scanf(" %c",&myStr[index]);
index++;
} while ((myStr[index-1]!='*')&&((index)<(sizeof(myStr)/sizeof(myStr[0]))));
index=0;
while ((myStr[index]!='*')&&(index<(sizeof(myStr)/sizeof(myStr[0]))))
{
printf("%c",myStr[index]);
index++;
}
printf("\n");
return(0);
}
Размер мифа фиксируется объявлением его [3], возможно? В таком случае ваш фактор не будет представлять количество фактических символов в массиве? –
@JeremyKahan: Выполнение 'sizeof (myStr)/sizeof (myStr [0])' в массиве вполне допустимо для вычисления числа элементов. – alk
@alk да, но я был обеспокоен тем, что есть три элемента, был ли пользователь введен три. Но теперь я вижу, что это не имеет значения, поскольку либо пользователь входит в звезду, либо должен ввести три. –