字符输入输出
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 *); int main() { 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值。