「C言語/標準ライブラリ/string.h」の版間の差分

削除された内容 追加された内容
「ロケール」の節を追加
例を追加・修正
258 行
int main(void)
{
int iret;
char s1[3]={'a', 'b', 'c'};
char s2[3]={'a', 'd', 'e'};
if(ret=memcmp(s1, s2, 1)==0);
if(ret==0)
printf("s1とs2の初めの1文字を比較すると、等しい。\n");
printf("s1とs2の初めの1文字を比較すると、s1はs2と等しい。\n");
else
else if(ret>0)
printf("s1とs2の初めの1文字を比較すると、等しくない。\n");
printf("s1とs2の初めの1文字を比較すると、s1はs2より大きい。\n");
else if(ret<0)
printf("s1とs2の初めの1文字を比較すると、s1はs2より小さい。\n");
 
if(ret=memcmp(s1, s2, 2)==0);
if(ret==0)
printf("s1とs2の初めの2文字を比較すると、等しい。\n");
printf("s1とs2の初めの2文字を比較すると、s1はs2と等しい。\n");
else
else if(ret>0)
printf("s1とs2の初めの2文字を比較すると、等しくない。\n");
printf("s1とs2の初めの2文字を比較すると、s1はs2より大きい。\n");
else if(ret<0)
printf("s1とs2の初めの2文字を比較すると、s1はs2より小さい。\n");
}
</pre>
293 ⟶ 299行目:
int main(void)
{
int iret;
char s1[32]="abc";
char s2[32]="ade";
if(ret=strcmp(s1, s2)==0);
if(ret==0)
printf("s1とs2を比較すると、等しい。\n");
printf("s1とs2を比較すると、s1はs2と等しい。\n");
else
else if(ret>0)
printf("s1とs2を比較すると、等しくない。\n");
printf("s1とs2を比較すると、s1はs2より大きい。\n");
else if(ret<0)
printf("s1とs2を比較すると、s1はs2より小さい。\n");
}
</pre>
318 ⟶ 327行目:
*例
<pre>
#include <stdio.h>
書きかけ
#include <locale.h>
#include <string.h>
 
int main(void)
{
int ret;
char s1[]="abc";
char s2[]="ABC";
 
setlocale(LC_COLLATE, "C");
ret=strcoll(s1, s2);
if(ret==0)
printf("s1とs2を\"C\"ロケールで比較すると、s1はs2と等しい。\n");
else if(ret>0)
printf("s1とs2を\"C\"ロケールで比較すると、s1はs2より大きい。\n");
else if(ret<0)
printf("s1とs2を\"C\"ロケールで比較すると、s1はs2より小さい。\n");
 
setlocale(LC_COLLATE, "JPN");
ret=strcoll(s1, s2);
if(ret==0)
printf("s1とs2を\"JPN\"ロケールで比較すると、s1はs2と等しい。\n");
else if(ret>0)
printf("s1とs2を\"JPN\"ロケールで比較すると、s1はs2より大きい。\n");
else if(ret<0)
printf("s1とs2を\"JPN\"ロケールで比較すると、s1はs2より小さい。\n");
}
</pre>
=== strncmp関数 ===
341 ⟶ 377行目:
int main(void)
{
int iret;
char s1[32]="abc";
char s2[32]="ade";
if(strncmp(s1, s2, 1)==0)
printf("s1とs2の初めの1文字を比較すると、等しい。\n");
else
printf("s1とs2の初めの1文字を比較すると、等しくない。\n");
 
if(ret=strncmp(s1, s2, 2)==01);
if(ret==0)
printf("s1とs2の初めの2文字を比較すると、等しい。\n");
printf("s1とs2の初めの1文字を比較すると、s1はs2と等しい。\n");
else
else if(ret>0)
printf("s1とs2の初めの2文字を比較すると、等しくない。\n");
printf("s1とs2の初めの1文字を比較すると、s1はs2より大きい。\n");
else if(ret<0)
printf("s1とs2の初めの1文字を比較すると、s1はs2より小さい。\n");
 
ret=strncmp(s1, s2, 4);
if(ret==0)
printf("s1とs2の初めの4文字を比較すると、s1はs2と等しい。\n");
else if(ret>0)
printf("s1とs2の初めの4文字を比較すると、s1はs2より大きい。\n");
else if(ret<0)
printf("s1とs2の初めの4文字を比較すると、s1はs2より小さい。\n");
}
</pre>
372 ⟶ 414行目:
*例
<pre>
#include <stdio.h>
書きかけ
#include <locale.h>
#include <string.h>
 
int main(void)
{
char *p;
char s1[32];
char s2[]="abc";
 
setlocale(LC_COLLATE, "JPN");
strxfrm(s1, s2, 32);
 
printf("\ns1の値;");
for(p=s1; *p!='\0'; ++p)
printf("%2x ", *p);
}
</pre>
== 探索関数 ==
622 ⟶ 680行目:
*例
<pre>
#include <stdio.h>
書きかけ
#include <string.h>
 
int main(void)
{
char str[]="abc def,ghi.";
char *p;
 
p=strtok(str, " ,.");
printf("%s\n", p);
while(p!=NULL){
p=strtok(NULL, " ,.");
printf("%s\n", p);
}
}
</pre>
== その他の関数 ==