C语言---读入字符串

1、读入字符串可以使用以下方法:

char str[20];
scanf("%s",str);

 

char str[20];
gets(str);

 

char str[20];
fgets(str,20,stdin);

 

char* str=readline(NULL);
...
free(str);

以上方法都可以用于从标准输入端读入字符串str。

2、区别一

gets()、scanf()、readline()这两个函数读入字符串时,当遇到换行符时都会作为字符串读入的终止,并且换行符'\n'不读入到字符串中。

fget()函数读入字符串时,当遇到换行符时也会作为字符串读入的终止,但是换行符'\n'会作为所读入字符串的一部分(除空字符'\0'之外的最后一个字符)。

 

3、区别二

scanf()函数遇到任意空白符(空格、换行、制表符)都会终止字符串读入,即用scanf()读入的行是不能包含空格的。

用gets()、fgets()和readline()读入的行都是可以包含空格的。

例如:

char str[20];
char str1[20];
char str2[20];

scanf("%s",str);
gets(str1);
fgets(str2,20,stdin);

printf("string from scanf is:%s\n",str);
printf("string from gets is:%s\n",str1);
printf("string from fgets is:%s\n",str2);

以上代码的执行结果将是(输入:test and data):

string from scanf is:test

string from gets is:test and data

string from fgets is:test and data(后面还有一个换行符)

4、区别三

fgets()在读入字符串放入字符数组时,读入的有效字符的个数是:用于存储该字符串的字符数组的长度-1。超过这个长度的字符会被忽略。

fscanf('%s',str);和gets();在读入字符串到某个字符数组时,有效字符串的长度并没有限制在字符数组的长度-1。具体最多能读入多少有效字符没有定义,可能跟系统和编译器都有关。

例如:

char str[6];
fgets(str);
printf("str=%s",str);

说明:以上代码的执行结果:当输入“testdata”时,输出结果是:str=testd,即字符串的长度最长是6-1=5。

5、关于readline()

readline(“input str:”);可以在接受标准输入时,在标准输出上打印”input str:“提示符。

str=readline(NULL);读入的字符串存放在readline函数内部malloc的内存中,所以不使用以后,要用free显式释放那段内存。

使用readline()函数的程序,在编译时需要加: -lreadline 和 -lncursed,否则会报错。

  • 18
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值