C 如何使用函数将句子中的所有单词大写?

C 如何使用函数将句子中的所有单词大写?,c,C,我想放大我输入的句子中单词的首字母缩写。程序没有给出任何错误,我想我有逻辑错误 这是我的意见 the weather is sunny today. 它是输出 t 我想要的输出 The Weather İs Sunny Today. 我的密码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> char grow(char sentenc

我想放大我输入的句子中单词的首字母缩写。程序没有给出任何错误,我想我有逻辑错误

这是我的意见

the weather is sunny today.
它是输出

t
我想要的输出

The Weather İs Sunny Today.
我的密码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

char grow(char sentence []);
int main() {
    int i,j;
    char result[100],sentence[100];
    printf("please enter your sentence");
    gets(sentence);
    result[i]=grow(sentence);
    printf("%s",result);
    return 0;
}
char grow(char sentence[]){
    int i,length;
    char result[100];
    
    length=strlen(sentence);
    for(i=0;i<length;i++){
        
        if(sentence[i]==' '){
            sentence[i+1]=toupper(sentence[i+1]);
            
        }
    return(sentence[i]);
    }
        
}
#包括
#包括
#包括
#包括
字符增长(字符句子[]);
int main(){
int i,j;
字符结果[100],句子[100];
printf(“请输入您的句子”);
得到(句子);
结果[i]=增长(句子);
printf(“%s”,结果);
返回0;
}
字符增长(字符句子[]){
int i,长度;
字符结果[100];
长度=斯特伦(句子);

对于(i=0;i您的代码需要大量清理,请参阅附带的注释:

#包括
#包括
#包括
//对于toupper函数
#包括
//没有conio.h,因为它是非标准的
//这是无效的,因为函数不需要返回任何内容
空白增长(字符句子[]);
int main(){
//不需要int i,j,因为你不需要它们
//不需要结果数组,因为它会就地修改
char语句[100];
printf(“请输入您的句子\n”);
//出于安全原因,使用fgets代替get
fgets(第100句,标准文本);
//无结果[i]=行开始处,因为函数在适当位置修改
成长(句子);
printf(“%s”,句子);
返回0;
}
//这是无效的,原因与上述相同
void grow(char语句[]){
//不需要strlen在字符串中循环两次
//你只需要确保你没有空字节
for(int i=0;句子[i];i++){
//改为检查上一个字符或索引0
如果(i==0 | |句[i-1]==''){
//将当前字符大写以避免越界写入
第[i]句=toupper(第[i]句);
}
}
}

为了您自己的利益,您应该停止使用Turbo C

这是一个简单得多的算法。简单会带来更高的可读性,从而减少错误,更容易进行改进

while( scanf(" %s", word) == 1 ) {
    
    toupper(word[0]);
    printf("%s ", word);
}

='\0'
不是指“空白”,而是“字符串的结尾”。空白只是
'
中的
结果[i]=grow(句子);
未初始化
int i
。请不要使用“live”代码更新-只需发布您询问的代码。我已修复,但结果没有更改。@Sjuan76您不应使用conio和gets
char grow
应为
char*grow
return(句子[I]);
应为
return Session;