大写的替代字母

时间:2021-05-09 05:18:00

标签: c++ c string

因为下面的代码应该将给定的字符串转换为可选的大写或小写。一个字符串 S(仅字母)作为输入传递。打印输出应包含每个单词奇数位置的字母大写,每个单词偶数位置的字母小写。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char str[100];
int i;
scanf("%s",str);
for(i=0;str[i]!='\0';i++){
if((i%2)==1)
str[i]=tolower(str[i]);
else
str[i]=toupper(str[i]);
}
printf("%s",str);
return 0;
}

输入将是 tREE GiVES us fruiTS 而预期的输出应该是 TrEe GiVeS Us FrUiTs 但我得到的只是第一个字符串 TrEe 我应该怎么做才能得到完整的字符串

1 个答案:

答案 0 :(得分:2)

scanf("%s, str) 读入一个字符串直到第一个空白字符。因此,当您输入“tree give usfruits”时,它会读入“tree”,然后看到空格并停止。

尝试改用 fgets(str, 100, stdin)

https://www.cplusplus.com/reference/cstdio/fgets/