Gets(buf);buf[i] for (;buf;)
While(buf[i]) i++;字符的ASCII值做判断
For (;buf[i];); 能放在后边空语句
For (i=0;buf[i]==buf0[i];i++);空语句
Ch=getchar();
Gets(buf);
For (i=0;buf[i];i++)
最后什么条件结束
Gets(buf1);
For (i=0;buf2[i]=buf1[i];i++)
退出条件
Return ;exit(),_exit();进程
Strcpy
Strcat
For (i=0;buf1[i];i++)
For (j=0;buf1[i]=buf2[j];j++,i++)
Strstr
Gets(buf1);
Gets(buf2);
字符串的处理函数
重复使用buf
Bzero memset atoi sprintf
Strlen strcpy strcat strcmp strchr strstr
Strncpy strncmp 带n的多
Memcpy memcmp 内存
20个数组左右
Man string.h帮助文件档
为什么使用指针
指针:变量用来保存地址
小端pc
大端网络
读的顺序
指针保存边号,每个地址对应一个字符
编号永远不会变,数据变
定义:数据类型*指针类型
Int *p; p,q本身没有区别
Char *q;
1,*p,*q
2 p+1 q+1 指针也在内存中占地址
3 p-q=3 3个数据单元
还是指针类型3个字符char * 3个数
4指针比较p>q 哪能个前哪个后没有p+q无意义没有乘除
Int a=10,b=9,c=0,tmp=0;
Int *pa=&a,*pb=&b,*pc=&c,*ptmp=&tmp;
C=*pa+*pb;
*pa=c-*pa;
*pb=*pa+*pb;
*pc=*pb;
Ptmp=pc;
*ptmp=*pb+*pa;
Ptmp=pb;
Pa=pb;
*ptmp\*pa-*pc;
*pb=*pa+*pb;
A b c tmp
0x12 a
0x 23 b
0x 34 c
0x 45 tmp
Pa 0x12
Pb0x23
Pc0x34
Ptmp0x45
Qt
1 tat -xvzf qt
2 cd qt
3./configure
4.O
5.Yes
6.Make
7.Make install
指针与数组:减少代码量多了操作数据方法
Char *p=buf strlen
Gets(buf);
While(*p) p++;
P-buf 地址差
相距多少个数据单元
把数组练习用指针
编写mystrcpy使用指针操作
编写mystr实现字符串的反转
While(*p) p++;
Len=p-buf;
有乱码'\0'
Q=q-1;
While(p<q)
指针写字符串
Char buf[]="abcdefg";
Char *str="abcdefg";常量的起始地址
Sizeof(buf); 7
Sizeof(str); 4
Sizeof(buf); 6
Sizeof(str); 6
Buf[0]='b';
*str='b';段错误
段错误
操作非法数据,除了合法数据之外的数据
合法数据:程序已经定义的数据
Char *p;
Gets(p);四字节
Char buf[100];
多级指针
Char *******p;
Char ch='a';
Char *p;
P=&a;
二级指针:1作为函数的参数
2一级指针+malloc=指针数组
Myshell
1 myshell ls
2 ls -l
3 ls -l -a
4 容错
5 cd /tmp
6 ls -l >abc
7 ls-l | grep "abc"
换指针 换内容
从键盘上输入5个字符串,打印出最长的字符串
从键盘上输入5个字符串,按字符串大小升序输出