C语言中put()与puts()的区别是什么

C语言中put()与puts()的区别是什么,第1张

putchar()和puts()吧?

putchar()是输出一个字符的意思,经常用来输出一些特殊字符。

比如你要输出一个空格:putchar('\n');

比如你要输出一条线:for(i=0;i<30;i++) putchar('-');

和printf有作用相同的地方。相对的getchar()获得一个字符。

puts();和gets();

前者是输出,后者是(从键盘)获得。

但是而这都是对于字符数组或者指向字符数组的指针进行 *** 作的。

比如你在char str[20];里面输入了一个字符串(可以用gets(str)函数实现)。然后通过puts(str);语句就可以进行输出了。这里要注意,这两个函数的括号里面的参数是字符串数组的首地址也就是字符数组的名字或者是已经被赋值指向字符数组的指针的名字。

这两个与scanf("%s",str);以及for和%c的组合相比,优点是书写简便,可以接受空格(比如你输入how are you的时候,有空格就是能用gets()进行输入了)。scanf是看到空格和回车都认为是结束,而gets可以接受空格,只把回车当做结束。字符串输入输出的时候这两个函数用的频率还是蛮高的。

再就是后面文件方面的输入输出,fgetc()/fputc()/fgets()/fputs(),有兴趣可以看一下。

#include<stdioh>

#include<stringh>

int main()

{

char string[80];

int n,i;

scanf("%s",&string);

n=strlen(string);

for(i=n-1;i>=0;i--)

putchar(string[i]);//(有错误)

}

1,puts是输出字符串,输出完,自动回车,此函数中puts后要跟数组名,不是数组元素,

2反向输出可用putchar进行一个一个元素反向输出。

3while未设置终止条件,哪怕能执行,也是无限循环

puts()函数用来向标准输出设备(屏幕)写字符串并换行, 其调用格式为: puts(s);

其中s为字符串变量(字符串数组名或字符串指针),puts()函数的作用与语printf("%s\n", s)相同。

gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。其调用格式为: gets(s);

s为字符串变量(字符串数组名或字符串指针)。gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s) 函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束, 空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。

putchar函数只能用于单个字符的输出,且一次只能输出一个字符。getchar函数只能用于单个字符的输入,一次输入一个字符。程序的功能是输入一个字符,显示一个字符,回车换行,再输入并显示一个字符。而运行时字符是连续输入的,运行结果却是正确的,这是因为输入字符后,它们暂存于键盘的缓冲区中,然后由getchar函数从键盘缓冲区中一个一个的取出来。

putchar()和puts()吧?

putchar()是输出一个字符的意思,经常用来输出一些特殊字符。

比如你要输出一个空格:putchar('\n');

比如你要输出一条线:for(i=0;i<30;i++) putchar('-');

和printf有作用相同的地方。相对的getchar()获得一个字符。

puts();和gets();

前者是输出,后者是(从键盘)获得。

但是而这都是对于字符数组或者指向字符数组的指针进行 *** 作的。

比如你在char str[20];里面输入了一个字符串(可以用gets(str)函数实现)。然后通过puts(str);语句就可以进行输出了。这里要注意,这两个函数的括号里面的参数是字符串数组的首地址也就是字符数组的名字或者是已经被赋值指向字符数组的指针的名字。

这两个与scanf("%s",str);以及for和%c的组合相比,优点是书写简便,可以接受空格(比如你输入how are you的时候,有空格就是能用gets()进行输入了)。scanf是看到空格和回车都认为是结束,而gets可以接受空格,只把回车当做结束。字符串输入输出的时候这两个函数用的频率还是蛮高的。

再就是后面文件方面的输入输出,fgetc()/fputc()/fgets()/fputs(),有兴趣可以看一下。

首先你看懂下面这段文字

scanf函数和getchar函数在输入时是读取到“回车”就结束的,而回车符留在了输入流缓冲区,当下一次输入仍用scanf或者getchar读入一个字符的时候,则会把缓冲区的回车符读取从而导致结果不正确,但若第二次是用scanf输入一个数字的时候,scanf则会跳过空白字符,可以正常输入。

在用scanf读入字符串如scanf("%s",str)时,在输入的过程中,如字符串内有空格如hello

world,则只能读取到hello,因为scanf使用%s输入方式时,认为遇到空格、TAB、回车键则认为输入结束,因而只能读取无空格的字符串。

第一:要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题!

读取字符时:

scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);

getchar()以Enter结束输入,也不会舍弃最后的回车符;

读取字符串时:

scanf()以Space、Enter、Tab结束一次输入,不舍弃最后的回车符。

gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!

当你看明白了上面的,再看我给你下面的解释

//----------------------------------------

当程序运行到scanf(“%s%s”,s[0],s[1]);语句时,你输入aaaa

bbbb<CR>时,按照上面的,scanf函数在以%s形式输入字符串时遇到空格或回车会结束输入,所以aaaa传给了s[0],然后bbbb传给了s[1],但是最后你输入的这个回车字符不被scanf函数丢弃,留在了输入缓冲区中

然后当程序运行到gets(s[2]);时,会读取到缓冲区中残留的这个回车,而gets函数遇到回车就代表输入结束,所以传给s[2]的是一个空字符串。

然后getss([3]);你输入的cccc

dddd就全部传给s[3]了,因为gets函数遇到空格不结束

这样你该明白了吧,还有puts函数输出的时候是自动换行的

以上就是关于C语言中put()与puts()的区别是什么全部的内容,包括:C语言中put()与puts()的区别是什么、c语言用puts函数输出字符串问题、c语言中,gets()和puts()函数与getchar()与putchar()函数有何区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9577575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存