精华内容
下载资源
问答
  • 0.getchar()、putchar()输入缓冲区,键盘输入是“行缓冲”遇到一个换行符时候清空缓冲区。...——从输入缓冲区读取一个字符,不管字符是什么,都读取。putchar()——打印一个字符,没有换行符。注意put...

    0.getchar()、putchar()

    输入缓冲区,键盘输入是“行缓冲”遇到一个换行符的时候清空缓冲区。

    标准流,stdin和stdout,是标准的输入输出流,键盘输入就是用的stdin。

    文件结尾,C不关心操作系统是如何检测文件结尾,C在检测到文件结尾之后返回EOF。

    getchar();——从输入缓冲区读取一个字符,不管字符是什么,都读取。

    putchar()——打印一个字符,没有换行符。注意putchar只打印一个字符,换行符也算一个字符,想要打印换行符应该是putchat('

    ')。

    跳过剩余的char:

    while(getchar()!='')

    {continue;

    }

    1.scanf()

    返回值——返回正确读取的个数int型。

    这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”(如果是“.”呢么要在输入数据的时候加“.”)如“2,3,4”。

    函数测试:用户混合输入int数据和字符串数据。注意这里两个输入是用的英文句号"."分开的,所以输入的时候两个数据应该用英文句号隔开否则就不算正确输入。

    函数设计思路:用户输入两种类型的数据:int和字符串,当用户输入的类型错误的时候提示用户错误并请求再次输入。

    #include

    int main(void)

    {intage;char name[20];

    puts("please enter your age and your name");while(scanf("%d.%s",&age,name) != 2)

    {while(getchar()!='')//清空输入缓冲区

    {continue;

    }

    puts("age and name,please anain!");

    }while(getchar()!='')//清空输入缓冲区

    {continue;

    }

    printf("hi %s,",name);

    printf("you are %d years old",age);

    getchar();//等待

    return 0;

    }

    程序中有两个专门清空缓冲区的while循环,(1)用户输入错误的时候输入缓冲区域会留下错误输入的数据,这些数据会连同下一次输入一起作为输入数据,因此必须要清除掉。(2)如果用户输入正确,由于scanf()函数读取之后会留下换行符'

    '在输入缓冲区中,同样影响下一次输入,因此也要清除掉,其实这里最好用一个getchar(),用getchar()效率更高,我这是偷懒复制的。

    2.printf()

    #include

    intmain(void)

    {inti, j;

    i=10;

    j=20;

    printf("i=%d;j=%d", i, j);return 0;

    }

    注意printf()不输出换行符,想要换行需要这样:

    printf("i=%d;j=%d", i, j);

    3.gets()

    读取输入缓冲区中所有的字符,遇到换行符

    的时候停止,并且把

    丢弃然后在读入数据的尾部加上 。

    gets()读取成功之后返回字符串的指针,如果读取失败则返回NULL。

    用gets的好处是不用和用scanf一样在后边跟着一个清理

    的getchar()。如下:

    #include

    int main(void)

    {char name[20];

    puts("please enter your name");while(gets(name)==NULL)

    {

    puts("name,please anain!");

    }

    printf("hi %s",name);

    getchar();//等待

    return 0;

    }

    但是gets()函数步检查容量是否超过参数的容量,特别容易发生溢出,上面的例子name[]容量只有20,一旦用户输入超过20个字符的容量,name数组后面的内存数据就会被覆盖,因此这是非常不安全的。

    C11标准中已经删除了gets()函数,用gets_s()函数代替。

    4.gets_s()

    大写的尴尬。

    9d78098bd799b7d00ae83ba2f57e0870.png

    5.fgets()

    fgets()函数有三个参数,第一个是读取的字符串要写入的变量,第二个是读取多少个字符(n-1个,例如第二个参数写3那么函数读取2个字符,字符数据大于2就会报错),第三个参数是数据源,如果是从键盘读取那么就是stdin(标准输入流)。

    fgets()函数不会把

    丢掉并在字符串尾部添加 ,而是原封不动的把所有东西全部写入到变量中(

    也是)。

    与gets()一样fgets()也是返回输入字符串指针(成功读取的话),读取失败会返回NULL。

    把gets()函数改成如下;

    #include

    int main(void)

    {char name[20];

    puts("please enter your name");while(fgets(name,20,stdin)==NULL)

    {

    puts("name,please anain!");

    }

    printf("hi %s,how old are you?",name);

    getchar();//等待

    return 0;

    }

    就会有如下输出:

    548c1078f92f3012cd4d2d7106979819.png

    很尴尬,因为fgets()函数连同

    一起读取到了数组name中,输出的时候也一起输出了,所以“,how old are you ?”就被换行了。

    6.puts()

    puts()函数使用很简单,他只有一个参数,字符串地址。

    与printf()不同,puts()函数自动添加一个

    到字符串尾部,也就是说:自动换行。

    还是看上面的代码:

    #include

    int main(void)

    {char name[20];

    puts("please enter your name");while(fgets(name,20,stdin)==NULL)

    {

    puts("name,please anain!");

    }

    printf("hi %s,how old are you?",name);

    getchar();//等待

    return 0;

    }

    注意main()函数内的第二行,尾部并没有换行符

    。但是输出的时候:

    88d05b171e00885ef666894b7fb8fea0.png

    自动换行了。

    注意puts()的参数是一个地址,如果想要输出name中的字符串的话:

    puts(name);

    注意:puts()遇到空字符 就会停止输出。

    如下:

    0779ff61a911e85b78c046f183b882ef.png

    d没有了。大写的尴尬!!!

    但这还不是最严重的,puts()只有遇到空字符 才会结束输出,那么,如果字符串中没有空字符呢?

    这时puts就不知道应该在哪里停止输出了,所以会造成程序的不稳定,如下我重新修改了下数组数据,删掉了 :

    28a10c95b6217902c9f51db6fbbccf02.png

    程序在e后面多了一个方框。

    注意如果字符串中没有 ,printf也会蒙圈的:

    929daa54cd57b234045672334f0a404f.png

    7.fputs()

    fputs()需要指定输出流:

    且fputs()并不会像puts()一样自动添加换行符。

    f216a09d324a3c25a39c6db9b3ec7708.png

    注意:如果name数组最后一个元素不是 的话还是会出错的。

    8.总结

    gets()与put()搭配,输入的时候把

    替换成 (其实是去掉之后再加上,意思差不多),输出的时候添加

    fgets()与fput()搭配,输入的时候原封不动的把

    读取,输出的时候不自动添加

    参考:https://www.cnblogs.com/qingergege/p/5925811.html

    展开全文
  • c语言中文本输出函数名称printf。printf函数语法“printf("格式控制字符串",输出列表)”;...1、printf函数调用格式printf函数格式输出函数是C语言中使用最频繁的输出函数,相对于putchar函数而言,...

    c语言中文本输出的函数名称是printf。printf函数的语法是“printf("格式控制字符串",输出列表)”;该函数功能是按照“格式控制字符串”指定的格式,输出“输出列表”中的内容,格式控制串可由格式字符串和非格式字符串两种组成。

    fe3bb3ce7581c1523a24460184aa6917.png

    c语言中文本输出的函数名称是printf。

    1、printf函数的调用格式

    printf函数格式输出函数,是C语言中使用最频繁的输出函数,相对于putchar函数而言,它的功能非常强大。printf函数的调用格式如下:

    printf("格式控制字符串",输出列表)

    格式说明:

    1)、该函数功能是按照“格式控制字符串”指定的格式,输出“输出列表”中的内容。

    2)、格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串式以%开头,再%后面跟各种格式字符,以说明输出数据的类型、形式、长度、小数位等。如“%d”表示按十进制整形输出等。非格式字符串输出时原样打印,在显示中起提示作用。

    3)、输出列表中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。

    3f52174505668e9d06d3e6079870e6e3.png

    推荐教程:《C语言》

    展开全文
  • 原文:https://blog.csdn.net/lemon_jay/article/details/82917000 ”,这篇文章意思将字符串指针的值的十进制形式输出,但%c要求输出字符,将地址值转换为对应的字符输出,网上又有讲大于127的整型用%c输出要...
  • 0.getchar()、putchar() 输入缓冲区,键盘输入是“行缓冲”遇到一个换行符时候清空缓冲区。 标准流,stdin和stdout...——从输入缓冲区读取一个字符,不管字符是什么,都读取。 putchar()——打印一个字符,没...

    0.getchar()、putchar()

    输入缓冲区,键盘输入是“行缓冲”遇到一个换行符的时候清空缓冲区。

    标准流,stdin和stdout,是标准的输入输出流,键盘输入就是用的stdin。

    文件结尾,C不关心操作系统是如何检测文件结尾,C在检测到文件结尾之后返回EOF。

    getchar();——从输入缓冲区读取一个字符,不管字符是什么,都读取。

    putchar()——打印一个字符,没有换行符。注意putchar只打印一个字符,换行符也算一个字符,想要打印换行符应该是putchat('\n')。

    跳过剩余的char:

    while(getchar()!='\n')  
    {
        continue;
    }

     

    1.scanf()

    返回值——返回正确读取的个数int型。      

    这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”(如果是“.”呢么要在输入数据的时候加“.”)如“2,3,4”。

    函数测试:用户混合输入int数据和字符串数据。注意这里两个输入是用的英文句号"."分开的,所以输入的时候两个数据应该用英文句号隔开否则就不算正确输入。

    函数设计思路:用户输入两种类型的数据:int和字符串,当用户输入的类型错误的时候提示用户错误并请求再次输入。

    #include<stdio.h>
    
    int main(void)
    {
        int age;
        char name[20];
        puts("please enter your age and your name");
    
        while(scanf("%d.%s",&age,name) != 2)
        {   
            while(getchar()!='\n')//清空输入缓冲区
            {
                continue;
            }
            puts("age and name,please anain!");
            
        }
    
        while(getchar()!='\n')//清空输入缓冲区
            {
                continue;
            }
    
        printf("hi %s,",name);
        printf("you are %d years old\n",age);
        getchar();//等待
        return 0;
    }

     

    程序中有两个专门清空缓冲区的while循环,(1)用户输入错误的时候输入缓冲区域会留下错误输入的数据,这些数据会连同下一次输入一起作为输入数据,因此必须要清除掉。(2)如果用户输入正确,由于scanf()函数读取之后会留下换行符'\n'在输入缓冲区中,同样影响下一次输入,因此也要清除掉,其实这里最好用一个getchar(),用getchar()效率更高,我这是偷懒复制的。

    2.printf()

    #include<stdio.h>
    int main(void)
    {
        int i, j;
        i=10;
        j=20;
        printf("i=%d;j=%d", i, j);
        return 0;
    }

     

    注意printf()不输出换行符,想要换行需要这样:

    printf("i=%d;j=%d\n", i, j);

     

    3.gets()

     读取输入缓冲区中所有的字符,遇到换行符\n的时候停止,并且把\n丢弃然后在读入数据的尾部加上\0。

    gets()读取成功之后返回字符串的指针,如果读取失败则返回NULL。

    用gets的好处是不用和用scanf一样在后边跟着一个清理\n的getchar()。如下:

    #include<stdio.h>
    
    int main(void)
    {
        char name[20];
        puts("please enter your name");
        while(gets(name)==NULL)
        {   
            puts("name,please anain!");
        }
        printf("hi %s",name);
        getchar();//等待
        return 0;
    }

     

    但是gets()函数步检查容量是否超过参数的容量,特别容易发生溢出,上面的例子name[]容量只有20,一旦用户输入超过20个字符的容量,name数组后面的内存数据就会被覆盖,因此这是非常不安全的。

    C11标准中已经删除了gets()函数,用gets_s()函数代替。

    4.gets_s()

    大写的尴尬。

     

    5.fgets()

    fgets()函数有三个参数,第一个是读取的字符串要写入的变量,第二个是读取多少个字符(n-1个,例如第二个参数写3那么函数读取2个字符,字符数据大于2就会报错),第三个参数是数据源,如果是从键盘读取那么就是stdin(标准输入流)。

    fgets()函数不会把\n丢掉并在字符串尾部添加\0,而是原封不动的把所有东西全部写入到变量中(\n也是)。

    与gets()一样fgets()也是返回输入字符串指针(成功读取的话),读取失败会返回NULL。

     把gets()函数改成如下;

    #include<stdio.h>
    
    int main(void)
    {
        char name[20];
        puts("please enter your name");
        while(fgets(name,20,stdin)==NULL)
        {   
            puts("name,please anain!");
        }
        printf("hi %s,how old are you?",name);
        getchar();//等待
        return 0;
    }

     

    就会有如下输出:

    很尴尬,因为fgets()函数连同\n一起读取到了数组name中,输出的时候也一起输出了,所以“,how old are you ?”就被换行了。

    6.puts()

    puts()函数使用很简单,他只有一个参数,字符串地址。

    与printf()不同,puts()函数自动添加一个\n到字符串尾部,也就是说:自动换行。

    还是看上面的代码:

    #include<stdio.h>
    
    int main(void)
    {
        char name[20];
        puts("please enter your name");
        while(fgets(name,20,stdin)==NULL)
        {   
            puts("name,please anain!");
        }
        printf("hi %s,how old are you?",name);
        getchar();//等待
        return 0;
    }

     

     注意main()函数内的第二行,尾部并没有换行符\n。但是输出的时候:

    自动换行了。

    注意puts()的参数是一个地址,如果想要输出name中的字符串的话:

     puts(name);

     

    注意:puts()遇到空字符\0就会停止输出。

    如下:

    d没有了。大写的尴尬!!!

     但这还不是最严重的,puts()只有遇到空字符\0才会结束输出,那么,如果字符串中没有空字符呢?

    这时puts就不知道应该在哪里停止输出了,所以会造成程序的不稳定,如下我重新修改了下数组数据,删掉了\0:

    程序在e后面多了一个方框。

    注意如果字符串中没有\0,printf也会蒙圈的:

     

    7.fputs()

    fputs()需要指定输出流:

    且fputs()并不会像puts()一样自动添加换行符。

    注意:如果name数组最后一个元素不是\0的话还是会出错的。

    8.总结

    gets()与put()搭配,输入的时候把\n替换成\0(其实是去掉之后再加上,意思差不多),输出的时候添加\n

    fgets()与fput()搭配,输入的时候原封不动的把\n读取,输出的时候不自动添加\n。

     

     

    参考:https://www.cnblogs.com/qingergege/p/5925811.html 

    转载于:https://www.cnblogs.com/feipeng8848/p/7273939.html

    展开全文
  • 什么puts(s2)输入有乱码,我用的是win7+C-Free4.0。 代码如下: #include int main() { char s1[4],s2[7],c; int i,j; printf("请输入s1:"); gets(s1); printf("*****s1输入成功*****\n"); puts(s1); ...
  • 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数, 在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。 输入 一行字符输出 统计数据,4个数字,空格...

    题目描述

    编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,
    在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
    

    输入

    一行字符串
    

    输出

    统计数据,4个数字,空格分开。
    

    样例输入

    !@#$%^QWERT    1234567
    

    样例输出

    5 7 4 6 
    

    来源/分类

    C语言 
    

    题目截图:
    在这里插入图片描述
    思路:

    偶遇三个坑!
    1,这个是第二次碰到这种问题!我还是套用以前的方法来解决!结果就时间超时啦!
    	 while((c=getchar())!='\n')
    	 就是一个一个字符输入然后回车结束!
    	 结果就超时了呀!下图:
    

    在这里插入图片描述

    2,我有查询百度,找到字符串输入。但是也是输出错误。后来发现,字符串的结束时:‘\0’
    但是我保留的是:‘\n’ 换行符!
        所以就失败啊
    3,最后一个坑,解决了超时问题!答案错误。原因是没有加上‘=’符号!
    

    在这里插入图片描述
    最终代码:

    #include<iostream>
    using namespace std;
    void tt(char *a)
    {
    int n,s,o,z;
    	n=s=o=z=0;
    	while(*a!='\0')
    	{
    		if(*a>='0'&&*a<='9')
    			n++;
    		else
    			if((*a>='A'&&*a<='Z')||(*a<='z'&&*a>='a'))
    				z++;
    			else
    				if(*a==' ')
    					s++;
    				else
    					o++;
    		a++;
    	}
    		cout<<z<<" "<<n<<" "<<s<<" "<<o<<" ";
    }
    int main()
    {
    	char a[100];
    	gets(a);
    	tt(a);
    }
    

    代码截图:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
    OJ结果:
    在这里插入图片描述

    展开全文
  • 双引号内的字符串可以中文,英文或者数字等,在字符串后面可以加上转义字符,比如我们常用的换行符‘\n’,等。下图一个常用的例子: 2,printf("输出控制符",输出参数); 双引号内的‘输出控制符’确定...
  • 请将该函数填写完整 } int main() { int n; char str[MAX_LEN]={0}; scanf("%d", &n); convert(n, str); printf("%s\n", str); return 0; }</code></pre>  </p>
  • putchar()语法结构为 int putchar(int char) ,其功能把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中,为C 库函数 ,包含在C 标准库 中。其输出可以一个字符,可以介于0~127之间的一个十...
  • C语言字符

    2019-05-31 12:38:35
    字符 什么是字符 字符就是符号、图案,在计算机中以整数形式存储,当需要显示时会根据ASCII表中对应关系,显示相应符号或图案。 字符类型(char)数据(如字符A,a,0,$等...单个字符的输入/输出函数 除了可...
  • 非常简单的函数就是让a为b的一个复制数组,但是真的去输出a的时候,结果并不是这,这因为a并不一个全为0的字符数组。 最为简单的初始化方法就是char a[10] = {0};就可以将所有位置初始化为‘\0’。 当然可能...
  • 和:是什么意思相关问题:匿名网友:%c单个字符输出的意思。%s是输出字符串。%d是输出整型。%f是输出整型。这是在scanf、printf这样的函数中,将参数类型与输入/输出句子中相应位置相对应所使用转义标志符。其中...
  • C语言:缓冲区及字符输入与输出

    千次阅读 2019-12-30 22:19:02
    字符串在大多数编程语言中都有着举足轻重地位,在C语言中,字符串亦如此. 本篇博客将简单介绍一下缓存区概念和几个跟字符串输入输出有关的函数. 一、缓冲区 概念 系统为了加快程序运行速度预留出来...
  • printf("欢迎学习C语言\n"),\n转义字符,表示换行,和java类似。2、printf(“输出控制符”,输出参数); int i = 10; printf("%d",i); //d表示十进制,有个疑惑,本身我们给 i 赋值就是按照十进制赋值,这里...
  • C语言输入和输出函数使用格式占位符%作为格式控制,所谓占位符就是在输入输出内容中预留位置填充等待输入输出内容,出现格式占位符%地方表明有输入和输出。 常见格式控制有: %d 整数 %f 单精度浮点数 %lf...
  • C语言的可变参函数

    2016-10-19 22:19:50
    什么是可变参函数可变参函数,顾其名而思义,就是该函数参数数目不固定,例如我们格式化输出函数 int printf(const char *fmt, ...)这个函数“…”参数就代表它个可变参函数。这个函数第一个参数一定一...
  • 5261 用法如下:1、printf()函数是格式化输出4102函数,一般用于向标准输出设备按1653规定格式输出信息。2、printf()函数调用格式为:printf("", )。3、格式输出,它是c语言中产生格式化输出的函数(在 stdio.h ...
  • 4章节练习的时候,发现一个问题,当我尝试以逗号分隔两个输入的字符串的时候第二个字符串未能获取到值,且scanf函数直接跳过第二个值的获取。具体代码如下 ``` #include "stdio.h" int main(void) { ...
  • 在练习C语言文件流时候,看到了书上列举程序printf()函数的参数里含有一个转义字符"/a"。此为何意,甚好奇。然上网搜索未果,遂自行实验,得知: ①“/a”就是要电脑输出系统报错提示音。就是一般出现内存...
  • C语言数组函数的结合

    2021-03-26 10:02:04
    purchar()输出一个字符 getchar()获取一个字符 如何计算数组中元素个数 数组总大小/一个类型大小 int a[3] char b[3] 两个数组有什么不同 一个char型占用空间一个字符 一个整型数占用空间四个字节 printf(“a...
  • C语言允许一种特殊形式的字符常量,就是以字符 \ 开头的字符序列。例如在printf函数中的 ‘\n’ 代表一个“换行符”。‘\t’ 代表将输出的位置跳到下一个Tab(制表位置),一个Tab位置为8列。这一种在屏幕上无法...
  • 我看了strcpy这个函数的原理,从后面那个参数(字符串)开始覆盖前面 那么后面这个字符开头不就应该\0后第一位么? ``` #include #include #include int main(void) { char *a; a = ...
  • C语言的字符常量与变量

    千次阅读 2020-05-24 14:47:10
      我们使用printf函数,第一个参数需要输出的字符串。字符串用双引号包括。   不知道大家有没有考虑过,字符串什么组成的呢?没错,就是我们这一节讨论的字符了。   那如果我单独用字符
  • 这一类符号“格式说明”用于格式输入与格式输出,就是我们常见printf和scanf函数中在输入输出时,对不同类型数据(如int,float,char等)要使用不同格式说明。其中%d,用来输出十进制整数%f,用来输出实数(包括单...
  • 1 什么是字符串 “abc” ‘a’ 一个字符 “a”:一个字符串,由若干个字符构成串。"" 字符串常量:“abc” ‘a’,‘b’,‘c’,’\0’ 字符串变量:没有字符串变量,用字符数组来表示字符串变量。 字符串在存储上...
  • 1.从标准输入逐个字符复制到标准输出,一个简单白给题目,提到标准输入输出,直接就想到scanf和printf这两个函数,对于取字符还有getchar和putchar两个函数,预期效果是什么?从键盘架输入一个字符,从显示器输出...
  • 这个没什么好写的,记一下防止以后又忘记printf 函数返回的是输出的字符数int i = 43; printf("%d",i); //屏幕输出43,printf返回值2printf("%d",printf("%d",i)); //屏幕输出432,最左边的printf返回值1printf...
  • C++中使用cin和cout 完成输入输出操作。与scanf和printf 不同,scanf 和printf 是函数,而cin 和cout 类对象。,属于流操作符。...术语“流”想要表达意思:随着时间推移,字符是顺序生成或者消耗
  • c语言函数

    2016-09-26 19:04:38
    C语言中%-5d是什么意思 输出带符号整数,需要占用5个字符位置, 不够则空格补齐. %5d是右对齐,%-5d是左对齐. %-md:输出格式为整形,长度为m(输出最小长度),左对齐;可用m表示你3,4,5,121; %m.nf:...
  • 例70:C语言写一个函数,将一个字符串中元音字母复制到另一字符串,然后输出。 解析:if语句判断一下每一个字母是否符合元音字母,读者看着道题时候,需要注意一点的是如果用scanf函数是否可以,思考为什么要用...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 358
精华内容 143
关键字:

c语言的字符输出函数是什么

c语言 订阅