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;
}