toupper()无法正常工作

时间:2018-04-07 14:13:54

标签: c

这里我要检查输入数组中的每个字符(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);

2 个答案:

答案 0 :(得分:1)

更密切地查看int toupper(int c)的手册页。函数原型表明它返回大写字符。换句话说,它不适用于就地数据。相反,正如函数通常所做的那样,它返回数据的转换。

 for(i=0;i!=length;i++){
   string[i] = toupper(string[i]);
 }

答案 1 :(得分:0)

因为toupper是一个函数,它返回一个值,你需要有一个变量,或者你的数组在同一个索引中,以接收toupper返回的值。

这可以解决你的问题。