我正在學習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 –