首页 > 解决方案 > 大写替代字母

问题描述

由于下面的代码应将给定的字符串转换为可选的大写或小写。字符串 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我应该怎么做才能获得完整的字符串

标签: c++cstring

解决方案


scanf("%s, str)读入一个字符串,直到第一个空白字符。因此,当您键入“树给我们水果”时,它会读入“树”,然后看到空格并停止。

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

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


推荐阅读