2016-09-27 7 views
1

こんにちは私はCにはとても新しく、簡単な質問がありました。isalphaと空白の除去を使用する

空白と特殊文字を取り除き、すべての大文字を小文字に変換する文字列を取り込む関数を作成しました。

しかし、実行すると、大文字のみが小文字になります。

void txtedit(char *str){ 

int i; 

for(i=0; i < strlen(str); i++) { 

    if (isalpha(str[i])) { 
     str[i] = tolower(str[i]); 

    }//end if 
}//end for 
}//end void function 

ご協力いただければ幸いです。

ような何かを言うあなたは(あなたのforループの下に)先頭にwhileループを持っている可能性が非アルファベット文字とスペースを取り除くために

+2

空白を「削除する」とはどのように思いますか? –

+1

'int j = 0;'と 'str [j ++] = tolower(str [i]);という別の変数が必要です。終了したら新しい文字列ターミネータを書くのを忘れないでください。これはアルファベットの文字だけを保持し、あなたの目標に近いステップになります。アルファベットと数字を保持したい場合は、 'isalpha'を' isalnum'に変更してください。 –

+0

文字列から空白と特殊文字を取り除くことを目標に、末尾に「\ 0」を付けてください。 – chux

答えて

0

(それは確かにある文字ということになり新しい文字列、

)スペースAZまたはAZとではなく、その後、アルファベットで記入するJという変数を作成します。その後、

 for(j=i;str[j]!='\0';j++) 
     { 
      str[j]=str[j+1]; 
     } 
     str[j]='\0'; 
    } 
} 

印刷文字列とうまくいけばそれは動作します。何が起こったのか教えてください!

関連する問題