Я пишу код для изменения строки ввода в верхний/нижний регистр в зависимости от выбора пользователя. Это мой код:C - scanf не работает с оператором switch
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
main(){
char line[20];
char sign;
int i =0;
printf("Write your line:\n");
scanf("%99[^\n]", &line);
printf("Choose U or L:\n");
scanf("%c", &sign);
switch(sign){
case 'U':
for(i = 0; i <strlen(line); i++){
printf("%c",toupper(line[i]));}
break;
case 'L':
for(i = 0; i <strlen(line); i++){
printf("%c",tolower(line[i]));}
break;
default:
break;
}
return 0;
}
Оператор switch работает нормально, если я укажу, какой знак находится в коде. Но когда я пытаюсь запустить его, он позволяет мне вводить строку, печатает следующий вопрос и, не позволяя мне вводить выбранное письмо, завершается. Что я делаю не так? Я экспериментировал с инструкцией scanf и, похоже, проблема, как если бы программа не могла выполнять два заявления scanf один за другим. Любая помощь?
'зсапЕ ("% 99 [^ \ п]", &line);' '-> зсапЕ ("% 19 [^ \ п]% * C", линия); ' – BLUEPIXY
Не используйте' scanf' для ввода пользователем. Используйте 'fgets'. – melpomene
[Этот вопрос] (http://stackoverflow.com/questions/41499535/scanf-clarification-in-c-language) ближе к проблеме OP о получении строки ввода пользователем с помощью 'scanf()'. –