У меня есть эта простая программа, которую я хочу проверить сам, и она в основном считывает из символов терминала и подсчитывает, сколько введенных символов нижнего регистра.C застрял в бесконечном цикле
В функции, которую я вызвал, чтобы сделать это, кажется, она просто работает навсегда в цикле.
/*
Create a function that reads the number of lower case letters from the user
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void CopyMe(char []);
main()
{
char letters [100];
int i = 0;
do
{
letters [i++] = getchar();
}
while (letters [i-1] != '\n');
letters [i-1] = '\0';
CopyMe(letters);
printf("Done \n");
system("pause");
return 0;
}
void CopyMe(char a[])
{
int lowercase = 0;
int i=0;
while (a[i] != '\0')
{
if (a[i] >= 'a' && a[i] <= 'z')
{
lowercase++;
}
}
printf("Lowercase: %d \n", lowercase);
}
Используйте отладчик для пошагового цикла. Причина должна быстро стать ясной. –
Вы не можете ошибиться в 'for (i = 0; i
ugoren
В любое время, когда цикл, кажется, «работает вечно», вам может потребоваться проверить условие цикла и определить, что-нибудь в теле цикла когда-либо изменит его. – WhozCraig