以下の サンプルコードは文字列データ操作ライブラリの使用例である。
#include <string.h>
#include <ctype.h>
#include <stdio.h>
void
check_string(char str[])
{
char tmpbuf[256]; /* 十分な大きさにする(ここでは256) */
/* strの文字列を tmpbufにコピー */
strcpy(tmpbuf, str);
/* それぞれの文字列の内容と長さを表示 */
printf("original string = '%s' (len=%d)\n", str, strlen(str));
printf("copy string = '%s' (len=%d)\n", tmpbuf, strlen(tmpbuf));
/* 文字列の比較(ここでは同じはず) */
if (strcmp(tmpbuf, str) == 0)
printf("2 string is same\n");
else
printf("2 string is different\n");
printf("\n");
/* tmpbufの文字列の後ろに別の文字列を連結 */
strcat(tmpbuf, ", far away");
/* それぞれの文字列の内容と長さを表示 */
/* (連結した分 tmpbuf側の文字列が長くなっている) */
printf("original string = '%s' (len=%d)\n", str, strlen(str));
printf("copy string = '%s' (len=%d)\n", tmpbuf, strlen(tmpbuf));
/* 文字列の比較(ここでは異なるはず) */
if (strcmp(tmpbuf, str) == 0)
printf("2 string is same\n");
else
printf("2 string is different\n");
}
int
main(void)
{
check_string("A Long time ago in a galaxy");
return 0;
}
実行結果は以下のようになる。
original string = 'A Long time ago in a galaxy' (len=27) copy string = 'A Long time ago in a galaxy' (len=27) 2 string is same original string = 'A Long time ago in a galaxy' (len=27) copy string = 'A Long time ago in a galaxy, far away' (len=37) 2 string is different
以下の
サンプルコードは文字列データ入出力ライブラリを使った例である。
入力した文字列から空白を除去して出力する。
#include <ctype.h>
#include <stdio.h>
#define MAXSTRLEN 1000 /* 最大1000文字 */
/* 空白文字除去 */
void
delete_space(char dst[], char src[])
{
int i, j;
i = 0; j = 0;
while (src[i] != '\0') {
if (isspace(src[i])) { /* 空白文字ならば読み飛ばす */
i++;
}
else {
dst[j++] = src[i++]; /* そうでなければ、srcからdstに1文字コピー */
}
}
dst[j] = '\0'; /* 最後にNULL文字をセット */
}
int
main(void)
{
char strbuf[MAXSTRLEN+1]; /* 文字列入力用バッファ */
char strbuf2[MAXSTRLEN+1]; /* 文字列変換結果格納用バッファ */
printf("input=");
while (gets(strbuf) != NULL) { /* 1行入力 */
/* (入力終了時はNULLが返る) */
delete_space(strbuf2, strbuf);
printf("input string=%s\n", strbuf);
printf("space deleted=%s\n", strbuf2);
printf("input=");
}
return 0;
}
実行結果は以下のようになる。
1行入力後エンターキーを叩くと入力した文字列から空白文字を除去して出力 する。input=A = 123 + 45 - 67*8 / 9 input string=A = 123 + 45 - 67*8 / 9 space deleted=A=123+45-67*8/9
以下の サンプルコードは文字列データ変換ライブラリの使用例である。
#include <stdlib.h> /* stdlib.hをインクルード */
#include <stdio.h>
int
main(void)
{
char strbuf[500]; /* 文字列入力用のバッファ(最大499文字分) */
printf("input number=");
gets(strbuf); /* 1行入力 */
printf("input string = '%s'\n", strbuf);
printf("atoi = %d\n", atoi(strbuf)); /* intに変換 */
printf("atof = %g\n", atof(strbuf)); /* doubleに変換 */
return 0;
}
実行結果は以下のようになる。
input number=3.1415926535 input string = '3.1415926535' atoi = 3 atof = 3.14159
他にも有用な関数が用意されているので、Visual Studioのヘルプを使って
調べてみるとよい。