这里我要检查输入数组中的每个字符(inputText [])是否与LETTERS数组中的至少一个字母匹配。但toupper()函数对我不起作用。我正在研究Linux mint并使用gcc进行编译。
do
{
scanf(" %[^\n]s" , inputText );
printf("Input text supplied is: %s\n", inputText);
int input_text_size = strlen(inputText) - 1;
for(int i = 0; i <= input_text_size; i++)
{
toupper(inputText[i]);//NOT WORKING
printf("toupper val = %c\n", inputText[i]);//TESTING
//testing every char against every element in LETTERS array
for(int j = 0; j <= 26; j++)
{
if(inputText[i] == LETTERS[j])
flag--;
}
}
if(flag != 0)
{
printf("Invalid input\n");
printf("only letters and spaces can be entered\n");
flag = input_text_size;
}
}while(flag == 0);
答案 0 :(得分:1)
更密切地查看int toupper(int c)
的手册页。函数原型表明它返回大写字符。换句话说,它不适用于就地数据。相反,正如函数通常所做的那样,它返回数据的转换。
for(i=0;i!=length;i++){
string[i] = toupper(string[i]);
}
答案 1 :(得分:0)
因为toupper是一个函数,它返回一个值,你需要有一个变量,或者你的数组在同一个索引中,以接收toupper返回的值。
这可以解决你的问题。