我正在学习C,如果这个问题看起来很简单或者是新手,那么你知道为什么。在发布这个问题之前,我已经在SO上搜索过。似乎有很多,但它们不是关于C,而是Java,php和其他。将句子中每个单词的第一个字符转换为大写
我正在研究一个简单的程序,它必须转换每个单词大写的第一个字符。例如,如果输入的是:
你好我的名字是克劳迪奥
输出将
我的名字是克劳迪奥
这是我的编码到目前为止:
#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;
}
输出是:
MyNameIsClaudio
显然,这不是我所期待的,如上所述。我以为我会一直能够解决简单地增加一个空间,这样的问题:
token[strlen(token)+1] = ' ';
strcat(sentence2,token);
但同样,输出是不是一个预期:
MyAmeSLaudio
因此,为了达到我想要的结果,我尝试过:
null_char = strrchr(token,'\0');
*null_char = ' ';
但是,似乎是正确的方法。 目前我处于死路一条。有人能告诉我如何完成我想要做的事吗?
浏览句子[]'数组,并对每个字母后面的空格,确保它是大写。 – chux
'char句子[21]'对于输入样本很小。 '擦'错字作为'句子' – BLUEPIXY
@BLUEPIXY固定代码。感谢您找出错字。用一种语言思考并不容易,在另一种语言中写作和阅读并寻找错误:P –