我目前正在学习C语言,如果这个问题看起来很简单或者是新手问题,那么你就知道原因了。在发布这个问题之前,我已经在SO上搜索过了。似乎有很多类似的问题,但它们不是关于C语言的,而是Java、php和其他语言。
我正在开发一个简单的程序,需要将每个单词的第一个字符转换为大写。例如,如果输入是:
hello my name is claudio
输出应该是:
Hello My Name Is Claudio
这是我目前编写的代码:
输出结果如下:
我正在开发一个简单的程序,需要将每个单词的第一个字符转换为大写。例如,如果输入是:
hello my name is claudio
输出应该是:
Hello My Name Is Claudio
这是我目前编写的代码:
#include <stdio.h>
#include <string.h>
int main(void){
char sentence[21] = {'\0'}, sentence2[21] = {'\0'}, *token = NULL;
fgets(sentence,21,stdin);
token = strtok(sentence," ");
while(token != NULL)
{
*token = toupper(token[0]);
strcat(sentence2,token);
token = strtok(NULL," ");
}
puts(sentence2);
return 0;
}
输出结果如下:
显然这不是我预期的结果,正如上面所解释的那样。我曾认为只需添加一个空格即可解决问题,如下所示:我的名字是Claudio
token[strlen(token)+1] = ' ';
strcat(sentence2,token);
但是,输出结果并不是预期的:
MyAmeSLaudio
因此,为了达到预期的结果,我尝试了以下方法:
null_char = strrchr(token,'\0');
*null_char = ' ';
但这似乎也不是正确的方法。目前我陷入了死局。有人能给我一些提示,告诉我如何完成我想做的事吗?
sentence[]
数组,并确保每个空格后的字母都是大写。 - chux - Reinstate Monicachar sentence[21]
对于样本输入来说有点小了。frase
打错成了sentence
。 - BLUEPIXY