Вот часть описания задания: Программа должна остановить , принимая ввод, когда пользователь вводит слово. Предположим, что ни слова нет длиной более 20 букв.Проверка строки ввода пользователя
Я должен проверить, что если слово более 20 символов, ваше сообщение получит сообщение об ошибке и снова должно будет повторить. Также, когда я набираю текст, программа должна заканчиваться. Я не уверен, как правильно писать эти утверждения. Когда я запускаю его и ввести более 20 символов он дает мне ошибку - Expression: L("Buffer is too small" &&0)
Вот мой код до сих пор:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHAR 20
int charcount(char []);
int main()
{
char message[MAXCHAR];
int numofchar;
printf("Enter any word to display how many characters that word has.\nA word CANNOT be more than 20 charatcers long.\n");
printf("When you are finished type the word done.\n");
do
{
printf("\nEnter a word: ");
gets_s(message, MAXCHAR);
numofchar = charcount(message);
while (numofchar > MAXCHAR)
{
printf("The word enterd is more then 20 characters. Try again.\n");
printf("Enter a word: ");
gets_s(message, MAXCHAR);
}
printf("The word %s has %d characters.\n", (message),numofchar);
} while ((message,MAXCHAR) != 'done');
printf("\nEnd of program.\n");
system ("PAUSE");
return 0;
}
int charcount (char list[])
{
int i, count = 0;
for(i = 0; list[i] != '\0'; i++)
count++;
return(count);
}
это также дает мне ту же ошибку, когда я типа сделал или это будет просто рассчитывать слово сделано и не закончить программу, когда я пытаюсь писать иначе. – user2948755
Вы можете использовать strlen() вместо charcount(). Кроме того, «while ((сообщение, MAXCHAR)! = 'Done);' должен быть «while (strcmp (message,« done »));« –
Если вам нужно разрешить 20 символов в слове, вам нужно 21 символ в массиве, чтобы разрешить нулевой терминатор. Также 'gets_s()' делает я не подозреваю, что вы используете «scanf()» или один из своих братьев и сестер с «% 20s» в качестве спецификации преобразования. –