字符串和字符串函数
字符输入输出
getchar();
putchar();
?
ch=getchar();putchar(ch)?
?
?
?
?
字符串函数
字符串输入
?
创建存储空间 :接受字符串输入首先需要创建一个空间来存放输入的字符串。
?
char * name;scanf("%s",name);?
?
上述的用法可能会导致程序异常终止。
?
使用字符串数组 可以避免上述问题
?
char name[81];scanf("%s",name);
?
?
?
gets()函数:get string函数,读取字符串直至一个换行符 '\n',回车会导致换行符的产生。读取换行符之前的所有字符然后加上一个空字符'\0',然后把这个字符串交给调用它的程序。
gets()函数构造 :
?
char * gets(char * s){...return (s);}
?
gets()返回的指针和传递给它的是同一个指针。输入字符串只有一个备份,它作为函数参数传递过来的地址中;gets()函数可能有2个返回值,如果一切顺利,它返回的是读入字符串的地址。若是有错误,它返回的是一个空地址,叫做空指针。
?
gets()缺点:它不检查预留存储区是否能够容纳实际输入的数据,多出的字符溢出到相邻的内存区。
?
fgets()可以指定最大的读入字符数,为文件i/o设计。
?
fgets(char *ptr,int size,char *input)
?
?size来说明最大读入字符数,会读取size-1个有效字符。
input来指定说明读取那一个文件;从键盘读取数据时,可以使用stdin作为参数,接受键盘输入。fgets()函数会把换行符存储到字符串中,所以每次显示的时候都会显示换行符。
?
?
scanf()函数:获取单词而不是获取字符串;scanf()使用2种机制来决定输入结束,字符串从遇到的第一个非空白字符开始,如果使用%s,字符串读到下一个空白字符(但是不包括这个空白字符);如果指定了宽度如%10s,该函数会读入10个字符或者遇到空白字符,二者中先满足的就终止。
?
?
?
?
字符串显示
puts():给出字符串参数的地址,显示字符串时会自动地在其后面添加一个换行符。puts(字符数组)会输出字符数组内容,但是由于没有'\0',他会一直输出下去,直至找到一个'\0';
?
fputs():面向文件的版本。需要第二个参数来说明要写的文件,可以使用stdout作为参数来进行输出显示,同时fputs()不会自动添加换行符。
?
?
gets()丢掉输入里面的换行符 ?puts():添加换行符
fgets()存储输入中的换行符 ? fputs()不为输出添加换行符
?
?
?
?
?
自定义字符串输入输出函数:
?
?
主要是利用getchar()和putchar()来定制输入输出函数?
?
#include<stdio.h>void put1(const char *);intmain(){char p[]="hello my name is billsss";puts(p);printf("___________________\n");put1(p);return 0;}void put1(const char * p){int i=0;while(*p){putchar(*p++);i++;}printf("\n%d",i);}
?
?
?
?
字符串函数:string.h给出了函数原型
?
?
strcmp():用来比较字符串的内容,不是地址 ;同时它比较的是字符串数组中空字符之前的字符,所以可以用来比较不同长度的字符串数组的内容是否相同。
字符不相同的话,该函数返回非零值,若是相同,则返回0值。