字符串和字符串函数

字符输入输出

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值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值