C言語の標準ライブラリ関数の中には,アルファベットの大文字を小文字に変換する tolower という関数があります.
文字列を構成するすべての文字に対して,tolower 関数を適応させれば文字列中のすべての大文字を小文字に変換することができます.具体的には以下のように実装します.
/*
* 文字列中の大文字を小文字に変換する
* @param [in,out] s 変換したい文字列
* @return 変換後の文字列 (s) の先頭アドレス
*/
char *ToLowerString(char *s) {
int i = 0;
while ( s[i] != '\0' ) {
s[i] = tolower((unsigned char)s[i]);
i++;
}
return s;
}
以下に文字列中の大文字を小文字に変換するサンプルプログラムを示します.
/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
/* macros */
#define N 256
/* functions */
char *ToLowerString(char *s);
/* main */
int main(void) {
char s[N] = {'\0'};
/* 入力 */
printf("文字列を入力してください.\n> ");
scanf("%s", s);
/* 比較 */
ToLowerString(s);
printf("変換後の文字列: %s\n", s);
return EXIT_SUCCESS;
}
/*
* 文字列中の大文字を小文字に変換する
* @param[in,out] s 変換したい文字列
* @return 変換後の文字列 (s) の先頭アドレス
*/
char *ToLowerString(char *s) {
int i = 0;
while ( s[i] != '\0' ) {
s[i] = tolower((unsigned char)s[i]);
i++;
}
return s;
}
サンプルプログラムの実行結果は以下のようになります.
文字列を入力してください. > SNOOPY! 変換後の文字列: snoopy!
たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.
C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります.
オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.
ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.