Profile

ys2310

Author:ys2310
2008年春にNew York Cityにあるふる〜い大学を卒業。


Categories


new postings


new comments


new trackbacks


monthly archeive


FC2ブログ 転職
DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:C/C++ string.h
探索関数
memchr
ヘッダ #include "string.h"
形 式 void *memchr(const void *s, int c, size_t n);
機 能 sが指すオブジェクトの先頭n文字(いずれもunsigned char型として解釈する)の中でunsigned char型に変換したcの最初の出現を探す。
返却値 探し出した文字へのポインタを返す。ただし、見つからなかった場合は、空ポインタを返す。

■実装例■
#include

void *memchr(const void *s, int c, size_t n)
{
register const unsigned char *ss = s;
register const unsigned char *t = ss + n;
c = (unsigned char)c;
while (ss != t && *ss != c)
++ss;
return ss != t ? (void*)ss : "NULL";
}

[Quote]:http://bohyoh.com
http://libc.blog47.fc2.com/blog-entry-39.html

| BLOG TOP |
DATE: CATEGORY:C/C++ string.h
探索関数
strstr
ヘッダ #include "string.h"
形 式 char *strstr(const char *s1, const char *s2);
機 能 s1が指す文字列の中で最も先頭側に出現する、s2が指す文字列と同じ文字の並び(ナル文字は含まない)を探す。
返却値 探し出した文字の並びの先頭文字へのポインタを返し、見つからなかった場合は、空ポインタを返す。s2が長さ0の文字列であればs1を返す。

■実装例■
#include

char *strstr(const char *s1, const char *s2)
{
const char *p1 = s1;
const char *p2 = s2;

while (*p1 && *p2) {
if (*p1 == *p2) {
p1++;
p2++;
} else {
p1 -= p2 - s2 - 1;
p2 = s2;
}
}
return (*p2 ? NULL : (char *)(p1 - (p2 - s2)));
}

[Quote]:http://bohyoh.com

| BLOG TOP |
DATE: CATEGORY:C/C++ string.h
文字列複写関数
strncpy
ヘッダ #include "string.h"
形 式 char *strncpy(char *s1, const char *s2, size_t n);
機 能 s2が指す文字列を、s1が指す配列にコピーする。s2の長さがn以上の場合はn文字までをコピーし、nより短い場合は残りをナル文字で埋め尽くす。コピー元とコピー先が重なる場合の動作は未定義とする。
返却値 s1の値を返す。

■実装例■
#include

char *strncpy(char *s1, const char *s2, size_t n)
{
char *p = s1;
while (n) {
n--;
if (!(*s1++ = *s2++)) break; /* '\0'を見つけたら終了 */
}
while (n--)
*s1++ = '\0'; /* 残りを'\0'で埋める */
return (p);
}

[Quote]:http://bohyoh.com

| BLOG TOP |
DATE: CATEGORY:C/C++ string.h
文字列比較関数
strncmp
ヘッダ #include "string.h"
形 式 int strncmp(const char *s1, const char *s2, size_t n);
機 能 s1が指す文字の配列とs2が指す文字の配列の先頭n文字までの大小関係(先頭から順に1文字ずつ比較していき、異なる文字が出現したときに、それらの文字の対に成立する大小関係とする)の比較を行う。
返却値 等しければ0、s1がs2より大きければ正の整数値、s1がs2より小さければ負の整数値を返す。

■実装例■
int strncmp(const char *s1, const char *s2)
{
while (*s1 == *s2) {
if (*s1 == '\0') /* 等しい */
return (0);
s1++;
s2++;
}
return ((unsigned char)*s1 - (unsigned char)*s2);
}

[Quote]:http://bohyoh.com

| BLOG TOP |
DATE: CATEGORY:C/C++ string.h
文字列連結関数
strncat
ヘッダ #include
形 式 char *strncat(char *s1, const char *s2, size_t n);
機 能 s2が指す文字列を、s1が指す配列の末尾ににコピーする。s2の長さがnより長い場合は、切り捨てる。コピー元とコピー先が重なる場合の動作は未定義とする。
返却値 s1の値を返す。

■実装例■
char *strncat(char *s1, const char *s2, size_t n)
{
char *p = s1;

while (*s1) s1++; /* s1を末尾まで進める */
while (n--) {
if (!(*s1++ = *s2++)) break; /* 途中に'\0'があれば終了 */
}
*s1 = '\0'; /* s1の末尾に'\0'を入れる */
return (p);
}

[Quote]:http://bohyoh.com

| BLOG TOP |

copyright © Manhattan life all rights reserved.Powered by FC2ブログ