文字列処理の一般的な関数



1関数名:strcpy機能:1つの文字列を別の文字列にコピーする使い方:char*strcpy(char*destin,char*source);プログラム例:
#include<stdio.h>
#include <string.h>
int main(){
   char string[10];
   char *str1 = "abcdefghi";

   strcpy(string,str1);
   printf("%s
", string); return 0; }

2関数名:strcat機能:文字列接合関数、接合の2つの配列は同じではありません.使用法:char*strcat(char*destin,char*source);プログラム例:
#include<string.h>
#include <stdio.h>

int main(){
   char destination[25];
   char *blank = " ", *c = "C++", *Borland ="Borland";

   strcpy(destination,Borland);
   strcat(destination, blank);
   strcat(destination, c);

   printf("%s
",destination); return 0; }

3関数名:strchr機能:指定した文字の最初の一致点を1つの列で検索する使用法:char*strchr(char*str,char c);プログラム例:
#include<string.h>
#include <stdio.h>

int  main(void){
    char string[15];
    char *ptr, c = 'r';

    strcpy(string,"This is a string");
    ptr= strchr(string, c);
    if (ptr)
       printf("The character %c is at position: %d
", c,ptr-string); else  printf("The character was not found
"); return 0; }

4関数名:strcmp機能:シリアル比較用法:int strcmp(char*str 1,char*str 2);Asicコードを見て、str 1>str 2、戻り値>0;2つの列は等しく、0のプログラム例を返します.
#include<string.h>
#include <stdio.h>

int  main(void){
     char *buf1 = "aaa",  *buf2 = "bbb", *buf3 = "ccc";
     int ptr;

    ptr= strcmp(buf2, buf1);
    if (ptr > 0)
       printf("buffer2 is greater than buffer 1
");     else  printf("buffer 2 is less than buffer 1
");     ptr= strcmp(buf2, buf3);     if (ptr > 0)  printf("buffer 2 is greater than buffer 3
");     else printf("buffer 2 isless than buffer 3
");     return 0; }

5関数名:strncmp機能:文字列の前maxlen文字を比較する
形式:int strncmp(char*str 1,char*str 2,int maxlen)プログラム例:
#include<string.h>
#include <stdio.h>

int main(void){
     char *buf1 = "aaabbb", *buf2 = "bbbccc",*buf3 = "ccc";
     int ptr;

    ptr= strncmp(buf2,buf1,3);
    if (ptr > 0)
       printf("buffer 2 is greaterthan buffer 1
"); else  printf("buffer 2 is less than buffer 1
");   ptr= strncmp(buf2,buf3,3); if (ptr > 0) printf("buffer 2 is greaterthan buffer 3
"); else printf("buffer 2 is less than buffer 3
"); return(0); }

6関数名:strncpy機能:シリアルコピー、2番目の文字列の前のmaxlen文字を1番目の文字列にコピーする使い方:char*strncpy(char*destin、char*source、int maxlen);プログラム例:
#include<stdio.h>
#include <string.h>

int main(void){
     char string[10];
     char *str1 = "abcdefghi";

    strncpy(string,str1, 3); // 
    string[3] = '\0';
   printf("%s
", string);    return 0; }

7関数名:strrchr機能:指定した文字の最後の出現用法を列で検索する:char*strrchr(char*str,char c);プログラム例:
#include<string.h>
#include <stdio.h>

int main(void){
   char string[15];
   char *ptr, c = 'r';

   strcpy(string,"This is a string");
   ptr = strrchr(string, c);
   if (ptr)
      printf("The character %c is at position: %d
", c,ptr-string); else  printf("The character was not found
"); return 0; }

8 C/C++のSplit関数1 C/C++のSplit関数はstrtok()であり、その関数の原型は以下の通りである:char*strtok(char*str、const char*delimiters);関数はstrtok()が文字列を個々のセグメントに分割するために使用されることを示します.パラメータstrは分割しようとする文字列を指し、パラメータdelimitersは分割文字列であり、strtok()がパラメータstrの文字列にパラメータdelimitersの分割文字を見つけた場合、この文字を'0'文字に変更する.最初の呼び出しではstrtok()にパラメータstr文字列を与える必要があり、以降の呼び出しではパラメータstrをNULLに設定します.呼び出しが成功するたびに、次の分割後の文字列ポインタが返されます.
#include<stdio.h>
#include <string.h>
int main (){
   char str[] ="a,b,c,d*e";
   const char *split = ",";
   char * p;
   p = strtok(str,split);
   while(p!=NULL) {
        printf("%s
",p); p = strtok(NULL,split);   } getchar(); return 0; } /* , 'a,b,c,d*e" (,) 。 : a b c d*e delimiters , constchar * split = ","; constchar * split = ",*";// (,) (*) : a b c d e */