2013-7-10学習ノート[文字列操作、関数へのポインタ]

14883 ワード


   
   
   
   
1.strlen
, \0
int size = strlen("mj"); // 2
  
 char s1[] = "lmj";
 int size1 = strlen(s1); // 3
  
 char s2[] = {'m', 'j', '\0', 'l', 'm', 'j', '\0'};
 int size2 = strlen(s2); // 2     // , \0
2.strcpy
char s[10];
strcpy(s, "lmj");
//       s   ,       
char s[10]; char c[] = {'m', 'j', '\0', 'l', 'm', 'j', '\0'}; strcpy(s, c);
//      mj
3.strcat
 char s1[30] = {'L', 'm', 'j', '\0', 'L', 'o', 'v', 'e', '\0'};  strcat(s1, "OC");  printf("%s", s1);
//        ,     \0,             ,    \0
     LmjOC
4.strcmp
2つの を から に1 ずつ し( のASCII の きさに じて)、 が なるか'0'に うまで.すべての が じである 、 り は0になります. じでない 、2つの の の なる のASCII の を します.つまり、 1が 2より きい 、 の り は になり、そうでない は になります.
strcmp(str1,str2);// はstr 1-str 2
 char s1[] = "abc";
 char s2[] = "abc";
 char s3[] = "aBc";
 char s4[] = "ccb";
 printf("%d, %d, %d", strcmp(s1, s2), strcmp(s1, s3), strcmp(s1, s4));
:0,32,-2
s 1はs 2と じなので、0 を します.
s 1とs 3は2 が なり、bのASCII は98、BのASCII は66、b-B=32であるため、32 を す.
s 1とs 4は1 では なり、aのASCIIコード は97、cのASCIIコード は99、a-c=-2なので、-2 を します.

     
strlen(char *str) :       
strcpy(char *dest, char *src) : src dest
strcat(char *dest, char *src) : src dest
strcmp(char *s1, char *s2) : (ascii) s1 s2, 0, ascii
strstr(char *s1, char *s2) : s1 s2, , NULL

switchでは は4 しかありませんが、×××, 、ブール (C にbool がない)、
タイプのデフォルトは0からです
ソートアルゴリズム
//
//  main.c
//  test2
//
//Created by on 13-7-10.
//Copyright(c)2013 dingxiaowei.All rights reserved.
//
#include 
#define N 4
// ち
int*bubbleSort(int*num,int NN)/ パラメータは ××× のポインタ、 ろのNはこの の きさです
{
    for (int i=0; i
        for (int j=0; j
            if (num[j]>num[j+1]) {
                num[j]=num[j]^num[j+1];   //yi'huo
                num[j+1]=num[j]^num[j+1];
                num[j]=num[j]^num[j+1];
            }
        }
    }
    int *p=num;// を す
    return p;
}
//クイックソート
void* quickSort(int *num,int NN)
{
    
}
//ソートメソッド び し の を
void*show(int num[],int NN,int(*p)(int num[],int NN)// を すポインタと、 を すポインタ
{
    return p(num, NN);
}
int main(int argc, const char * argv[])
{
//printf(「いくつか べ えたい:」);
//    scanf("%d",&N);
printf(「ソートする%d を ( :1 3 2 4)」,N);
    int num[N];
    for (int i=0; i
        scanf("%d",&num[i]);
    }
printf(「 した は:」);
    for (int i=0; i
        printf("%d ",num[i]);
    }
    printf("");
    
// ち
    /*
    for (int i=0; i
        for (int j=0; j
            if (num[j]>num[j+1]) {
                num[j]=num[j]^num[j+1];
                num[j+1]=num[j]^num[j+1];
                num[j]=num[j]^num[j+1];
            }
        }
    }
    */
    show(num,N, bubbleSort);// を して を び すが、 はアドレス であり、 ではないため、 がmain の をパラメータとして する 、パラメータの の を し、 には の を する
printf(「バブルソート の は:」);
    for (int i=0; i
    {
        printf("%d ",num[i]);
    }
//クイックソート
    
    
}
ポインタはまず を さなければならない.そうしないと だ.
ポインタは の り を できますが、 のパラメータが いだけです.
ポインタ
char a[] = "dxw";// を し、 できます.
char *p = "dxw";// を します! にはconst char*p=「dxw」と くべきです. に を ける
//ポインタで を る
char a[]="dingxiaowei"
char *p=a;
for(;*p!='\0';p++)
{
printf("%c",*p); }

を すポインタは、 が のアドレスを し、 が アドレスを すようにします.
//
//  main.c
//  test1
//
//Created by on 13-7-10.
//Copyright(c)2013 dingxiaowei.All rights reserved.
//
#include 
int sum(int a,int b)
{
    int c = a + b;
    printf("%d + %d = %d",a,b,c);
    return c;
}
int minus(int a,int b)
{
    int c = a - b;
    printf("%d - %d = %d",a,b,c);
    return c;
}
int mul(int a,int b)
{
    int c = a * b;
    printf("%d * %d = %d",a,b,c);
    return c;
}
int div(int a,int b)
{
    int c = a/b;
    printf("%d/%d = %d",a,b,c);
    return c;
}
//count はaとbの の に いられる
//どんな をするかはp
int count(int a,int b,int(*p)(int ,int))
{
    return p(a,b);
}
int main(int argc, constchar * argv[])
{
   //int result = count(5, 6,sum);
   //printf("result:%d",result);
   /*
// を すポインタ pを
//pが す : り はintタイプ、 して2つのintタイプのパラメータを する
     int (*p)(int a,int b);
//ポインタ pをsum に ける
     p = sum;
//ポインタ pプロファイルでsum を び す
    //(*p)(5,6);
//それでもいい
     p(5,6);
     */
    int a,b,c,fuhao;
    char flag='y';
printf(「******へようこそ ********」);
    do
    {
        
printf(「 を してください(1. ;2. ;3. ;4. )、および2つの を します( えば1+2を したい は1 1 1 2を します]:」).
        scanf("%d %d %d",&fuhao,&a,&b);
        switch (fuhao) {
            case1:
                count(a, b, sum);
                break;
            case2:
                count(a, b, minus);
                break;
            case3:
                count(a, b, mul);
                break;
            case4:
                count(a, b, div);
                break;
            default:
printf(「 が しくありません. を してください!」
                break;
        }
printf(「 けますか?(y/n)」);
        flag = getchar();
        flag = getchar();
       //scanf("%c",&flag);
    }while ('y'==flag);
    return0;
}