C toupper()不工作
这里我检查输入数组(inputText[])中的每个字符是否与字母数组中的至少一个字母匹配。但是toupper()函数不适合我。我正在使用LinuxMint,并使用gcc进行编译C toupper()不工作,c,C,这里我检查输入数组(inputText[])中的每个字符是否与字母数组中的至少一个字母匹配。但是toupper()函数不适合我。我正在使用LinuxMint,并使用gcc进行编译 do { scanf(" %[^\n]s" , inputText ); printf("Input text supplied is: %s\n", inputText); int input_text_size = strlen(inputText) - 1; for(i
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);
do
{
scanf(“%[^\n]s”,inputText);
printf(“提供的输入文本为:%s\n”,inputText);
int input_text_size=strlen(inputText)-1;
对于(int i=0;i,因为toupper是一个返回值的函数,所以您需要有一个变量或数组在同一索引中才能接收toupper返回的值
这应该可以解决您的问题。请更仔细地查看手册页中的int-toupper(int-c)
。函数原型表明它返回大写字符。换句话说,它不处理现有数据。相反,与函数通常所做的一样,它返回数据的转换
for(i=0;i!=length;i++){
string[i] = toupper(string[i]);
}
toupper
不合适:inputText[i]=toupper(inputText[i]);
2个问题合一不是提问的方式。我在评论中回答了第一个问题,也许现在你的问题是为了说明你的格式说明符%[^\n]s
是两种不同格式的混合体%[]
和%s
。在知道input\u text\u size
的值之前,您已经设置了int flag=input\u text\u size;
。您是否有一个同名的阴影变量,因为看到的第一个用法不在int-input\u text\u size=strlen(inputText)-1;的范围内。
int-input\u-text\u size=strlen(inputText)-1;
strlen函数无论如何都不包含空终止符,因此不要减去0注意,标准原型为-int-toupper(int-c);
,因为它必须接受转换为无符号字符的每个值(0..255)以及EOF(负数,通常为-1
)如果参数是char
,它就不能这样做。谢谢@JonathanLeffler。我没有费心去查找它,只是在内存中工作。严格来说,如果你可以在单字节代码集中处理重音字符,如果纯char
是有符号类型,而不是无符号类型,那么你需要string[I]=touper((unsigned char)string[i];
-如果处理的是无符号的纯char
,如果不处理重音字符,也可以使用它。(这些都不适用于多字节或宽字符代码集-这是一个完全独立的bag'o'worms!)我想我在之前的评论中也应该提到这一点。很抱歉对您的答案进行增量处理。欢迎使用堆栈溢出。我认为如果您展示简单的代码来说明您所说的内容,您的答案会更好。如果您内联添加代码,请将其括在后面的勾号中。…`sample code`.
。如果您将代码添加为显示块,在编辑窗口中按您希望的格式设置它的格式,忽略预览,然后选择它并使用编辑框上方的{}
按钮将其缩进为代码。现在检查预览。不要在代码中使用制表符。在编写更大的代码块时,请使用“复制”“粘贴”。