さまざまな文字列操作
明解C言語 入門編 > 11. 文字列とポインタ >
さまざまな文字列操作
C
#include <stdio.h>
#include <string.h>int main(int argc, char* argv[])
{
/* strcat */
char st1[100] = "1234567890";
char st2[100] = "ABCDE";printf("%s + ", st1);
printf("%s = ", st2);
strcat(st1, st2);
printf("%s\n", st1);char st3[100] = "1234567890";
printf("%s + ", st3);
printf("%s = ", st2);
strncat(st3, st2, 4);
printf("%s\n", st3);char st4[100] = "1234567890";
printf("%s + ", st4);
printf("%s = ", st2);
strncat(st4, st2, 6);
printf("%s\n", st4);
puts("");/* strrev */
printf("%s\n", st4);
printf("%s\n", strrev(st4));
puts("");/* strcmp */
char* pt1 = "123";
char* pt2 = "123";int i = strcmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);pt2 = "122";
i = strcmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);pt2 = "124";
i = strcmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);pt2 = "999";
i = strcmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);pt2 = "12";
i = strcmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);pt2 = "1234";
i = strcmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);puts("");
/* stricmp */
pt1 = "ABCD";
pt2 = "abcd";
i = strcmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);i = stricmp(pt1, pt2);
if (i == 0)
printf("%s = %s (%d)\n", pt1, pt2, i);
else if (i > 0)
printf("%s > %s (%d)\n", pt1, pt2, i);
else
printf("%s < %s (%d)\n", pt1, pt2, i);puts("");
/* strstr */
pt1 = "1234567890";
pt2 = "45";
char* pt3 = strstr(pt1, pt2);
printf("strstr(\"%s\", \"%s\") = %u\n", pt1, pt2, pt3 - pt1);pt2 = "12";
pt3 = strstr(pt1, pt2);
printf("strstr(\"%s\", \"%s\") = %u\n", pt1, pt2, pt3 - pt1);pt2 = "123456780";
pt3 = strstr(pt1, pt2);
if (pt3 != '\0')
printf("strstr(\"%s\", \"%s\") = %u\n", pt1, pt2, pt3 - pt1);
else
printf("strstr(\"%s\", \"%s\") = NULL\n", pt1, pt2);puts("");
/* strchr */
pt1 = "1294567890";
char c = '9';
pt3 = strchr(pt1, c);
printf("strchr(\"%s\", \"%c\") = %u\n", pt1, c, pt3 - pt1);c = 'A';
pt3 = strchr(pt1, c);
if (pt3 != '\0')
printf("strchr(\"%s\", \"%c\") = %u\n", pt1, c, pt3 - pt1);
else
printf("strchr(\"%s\", \"%c\") = NULL\n", pt1, c);puts("");
/* strrchr */
c = '9';
pt3 = strrchr(pt1, c);
printf("strrchr(\"%s\", \"%c\") = %u\n", pt1, c, pt3 - pt1);c = 'A';
pt3 = strrchr(pt1, c);
if (pt3 != '\0')
printf("strrchr(\"%s\", \"%c\") = %u\n", pt1, c, pt3 - pt1);
else
printf("strrchr(\"%s\", \"%c\") = NULL\n", pt1, c);puts("");
pt1 = "1234567890";/* strpbrk */
pt2 = "ABCD8";
pt3 = strpbrk(pt1, pt2);
if (pt3 != '\0')
printf("strpbrk(\"%s\", \"%s\") = %u\n", pt1, pt2, pt3 - pt1);
else
printf("strpbrk(\"%s\", \"%s\") = NULL\n", pt1, pt2);pt2 = "ABCDE";
pt3 = strpbrk(pt1, pt2);
if (pt3 != '\0')
printf("strpbrk(\"%s\", \"%s\") = %u\n", pt1, pt2, pt3 - pt1);
else
printf("strpbrk(\"%s\", \"%s\") = NULL\n", pt1, pt2);puts("");
/* strcspn */
pt2 = "0";
i = strcspn(pt1, pt2);
printf("strcspn(\"%s\", \"%s\") = %u\n", pt1, pt2, i);pt2 = "A";
i = strcspn(pt1, pt2);
printf("strcspn(\"%s\", \"%s\") = %u\n", pt1, pt2, i);puts("");
/* strtok */
pt1 = "a\\bcd\\efg";
pt2 = "\\";
printf("pt1 = %s\n", pt1);pt3 = strtok(pt1, pt2);
printf("pt1 = %s, pt3 = %s\n", pt1, pt3);pt3 = strtok('\0', pt2);
printf("pt1 = %s, pt3 = %s\n", pt1, pt3);pt3 = strtok('\0', pt2);
printf("pt1 = %s, pt3 = %s\n", pt1, pt3);return 0;
}
実行結果
T:\>lesson087\project1.exe
1234567890 + ABCDE = 1234567890ABCDE
1234567890 + ABCDE = 1234567890ABCD
1234567890 + ABCDE = 1234567890ABCDE1234567890ABCDE
EDCBA0987654321123 = 123 (0)
123 > 122 (1)
123 < 124 (-1)
123 < 999 (-8)
123 > 12 (51)
123 < 1234 (-52)ABCD < abcd (-32)
ABCD = abcd (0)strstr("1234567890", "45") = 3
strstr("1234567890", "12") = 0
strstr("1234567890", "123456780") = NULLstrchr("1294567890", "9") = 2
strchr("1294567890", "A") = NULLstrrchr("1294567890", "9") = 8
strrchr("1294567890", "A") = NULLstrpbrk("1234567890", "ABCD8") = 7
strpbrk("1234567890", "ABCDE") = NULLstrcspn("1234567890", "0") = 9
strcspn("1234567890", "A") = 10pt1 = a\bcd\efg
pt1 = a, pt3 = a
pt1 = a, pt3 = bcd
pt1 = a, pt3 = efg