表示字符串和字符串函数

字符串输入

如果想要把一个字符串读入程序,首先必须预留储存该字符串的空间,然后用输入函数获取该字符串。

分配空间

要做的第一件事就是分配空间,易储存稍后读入的字符串。前面提到过,这就意味着必须要为字符串分配足够的空间。不要指望计算机在读取字符串是顺便计算他的长度,然后再分配空间(计算机不会这样做,除非你比那些一个处理这些任务的函数),假设编写程序代码如下:

char *name;

scanf( "%s", name);

虽然会通过编译(编译器很可能给出警告),但是在读入name是,name可能会擦写掉程序中的额数据或代码,从而导致程序异常或终止。因为scanf()要把信息拷贝至蚕食指定的低智商,而此时该参数是个未初始化的指针,name可能会指向任何地方。

最简单的做法是在声明是显示知名数组的大小

char name[81];

现在name是一个已分配快(81 字节)的地址,患有一种方法试试在使用C库函数来分配内存。

不幸的get()函数在读取字符串是,scang()和转换说明%只能读取一个单词,可是在程序中通常尧都区郑航输入,而不仅仅是一个单词。gets(0)就用于处理这种情况。gets(0)函数简单易用,塔读取证行输入,直至遇到换行符,然后丢弃换行符储存其余字符,并在这些字符的末尾添加一个空字符使其成为一个C字符串。他经常与puts()函数使用,该函数用于显示字符串,并在末尾添加换行符

gets()的替代品

fgets和fputs函数

fgets函数通常通过第2个参数限制读入字符书来解决一出问题。该函数专门设计用于处理文件输入,所以一般请款下可能不太好使。fgets与gets的区别如下

1.fgets函数的第二个参数指明了读入字符的最大数量。若果该参数的值是n,那么fgets将读入n-1个字符,或者是遇到第一个换行符为止

2.如果fgets读到第一个换行符是,会把它储存在字符串中,这点与gets不同,gets会对其换行符

3.fget的第三个参数指明要读入的文件,如果读入从键盘输入数据,这一stdin (标准输入)作为参数,便是福定义在stdio.h中

gets()函数

1.只从标准输入中读取数据,所以不需要第三个参数

2.当读到最大字符数都没有读到换行,会执行以下几步。首先吧目标数组中的首字符设置为空字符,读取比你高丢弃随后的输入,直至读到换行符或文件的末尾,然后返回空指针。接着,调用以来实现的额“处理函数”,可能会终止或退出程序

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值