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和getschar grow
应为char*grow
,return(句子[I]);
应为return Session;