关于scanf()的学习

红黑树的c语言代码实现 红黑树的代码实现。c语言版。原创的。参考算法导论。 立即下载

scanf函数我曾经在 这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!(我的邮箱:moongbingbing@gmail.com    blog: http://blog.youkuaiyun.com/wayne92       温铭 )有关详细的scanf函数解释,大家可以去看看《C程序设计语言》(K&C)和《C语言大全》(后面我把其中scanf的部 分贴了出来)。


曾经错的几个地方:(xpsp2,vc6.0环境下)
1.空白符问题
#include<stdio.h>
main()
{   
 int a;
 printf("input the data\n");
 scanf("%d\n",&a);// 这里多了一个回车符\n
   printf("%d",a);
 return 0;
}
结果要输入两个数程序才结束,而不 是预期的一个。why?
原因:用空白符结尾时,scanf会跳过空白符去读下一个字符,所以你必须再输入一个 数。这里的空白符包括空格,制表符,换行符,回车符和换页符。所以如果你用scanf("%d  ",&a)也会出现同样的问题。
解 决方法:这种错误大多是输入的时候不小心,多注意一点就好了。这种问题也不好检查,编译没有问题,一个空格也不容易看出来。当你的程序 出现上面的问题时,自己对照检查一下就可以了。


2.缓冲区问题
这是一个非常容易错的地方,我就错过多次。
#include <stdio.h>
main()
{
 int n = 5;
 char c[n];
 for(int i = 0; i < n; i++)
  c[i] = scanf("%c",&c[i]); 
 printf(c);
return 0;
}
如果输入:
a
b
c
那么循环就会“提前”结束了.
原因: 输入a和第一个回车后,a和这个回车符都留在缓冲区中。第一个scanf读取了a,但是输入缓冲区里面还留有一个\n,第二个scanf读取这个\n。然 后输入b和第二个回车,同样的,第三个scanf读取了b,第四个scanf读取了第二个回车符。第五个读取了c。所以五个scanf都执行了,并没有提 前结束。只不过有的scanf读取到了回车符而已。
解决方法:把程序改成这样就可以了:
for( i = 0; i < n; i++){
  scanf("%c",&c[i]);
fflush(stdin);//刷新缓 冲区
}
或者不用scanf,而用gets()函数,如:
#include<stdio.h>
main()
{   
 char c[5];
 gets(c);
 printf(c);
 return 0;
}
但要注意: 这个函数自动把你最后敲的回车转换为字符'\0'。如果你的输入超过了数组的大小,那么就会产生错误。


3.scanf()函数的参数输入类型不匹配问题
这是我在csdn论坛上见到的问题,这个错误 有时候会让人莫名其妙。
#include<stdio.h>
main()
{
 int a=123;
 char c='t';
 printf("input\n");
 scanf("%d%c",&a,&c);
 scanf("%d%c",&a,&c);
 scanf("%d%c",&a,&c);
 printf("%d\n%c\n",a,c);
 return 0;
}
当输入a 回车 后,会直接跳过下面2个scanf语句,直接输出为
123
t
原因: 对于scanf("%d%c",&a,&c),scanf语句执行时,首先试图从缓冲区中读入一个%d类型的数据,如果和第一个参数匹 配,则继续从缓冲区中读取数据和第二个参数进行匹配,依次进行下去,直到匹配完所有的参数;如果其中有一个参数不匹配,那就从这个地方跳出,忽略这个 scanf后面所有的参数,而去执行下一条语句。 
可以用下面的程序验证一下:
#include <stdio.h>
int main()
{
 int a=123,b=1;
 char c='t';
   scanf("%d%d",&a,&b);
 scanf("%c",&c);
 printf("%d\n%d\n%c\n",a,b,c);
 return 0;
}输入:2 回车a 回车
结果是:
2
1
a
解决方法:scanf() 函数执行成功时的返回值是成功读取的变量数,也就是说,你这个scanf()函数有几个变量,如果scanf()函数全部正常读取,它就返回几。但这里还 要注意另一个问题,如果输入了非法数据,键盘缓冲区就可能还个有残余信息问题。
比如:
#include <stdio.h>
 main()
{
 int a=123,b;
 while(scanf("%d%d",&a,&b)!=2)
  fflush(stdin);
 printf("%d\n%d\n",a,b);
 return 0;
}
你可以试一下,如果输入不是数字时,会有什么反应。

补充:scanf中一种很少见但很有用的转换字符:[...]和[ ^...]。
#include<stdio.h>
 main() 
{ 
char strings[100]; 
scanf("%[1234567890]",strings); 
printf("%s",strings);
return  0; 
} 
运行,输入:1234werew后,结果是:1234。
通过运行可以发现它的作用是:如果输入的字符属于方括号内字 符串中某个字符,那么就提取该字符;如果一经发现不属于就结束提取。该方法会自动加上一个字符串结束符到已经提取的字符后面。 
scanf("%[^1234567890]",strings); 它的作用是:如果一经发现输入的字符属于方括号内字符串中某个字符,那么就结束提取;如果不属于就提取该字符。该方法会自动加上一个字符串结束符到已经提 取的字符后面。 
注意:方括号两边不能空格,如:scanf("%[ 1234567890 ]",strings); scanf("%[ ^1234567890 ]",strings); 不让空格也会算在里面的。
用这种方法还可以解决scanf的输入中不能有空格的问题。只要用
scanf("%[^\n]",strings); 就可以了。很神奇吧。

scanf原型:参见《C语言大全》和K&C
# include <stdio.h>;
int scanf( const char *format, ... );
 函数 scanf() 是从标准输入流 stdin 中读内容的通用子程序,可以读入全部固有类型的数据并自动转换成机内形式。
    在 C99 中,format 用 restrict 修饰。
format 指向的控制串由以下三类字符组成:
       ● 格式说明符
       ● 空白符
       ● 非空白符
     
     转换字符(就是%后跟的部分)              
       a   读浮点值(仅适用于 C99)                                  
       A   读浮点值(仅适用于 C99)                                                  
       c   读单字符                                                
       d   读十进制整数                                            
       i   读十进制、八进制、十六进制整数                          
       e   读浮点数                                                
       E   读浮点数                                                
       f   读浮点数                                                
       F   读浮点数(仅适用于 C99)                                  
       g   读浮点数                                                
       G   读浮点数                                                
       o   读八进制数                                              
       s   读字符串                                                
       x   读十六进制数                                            
       X   读十六进制数                                            
       p   读指针值                                                
       n   至此已读入值的等价字符数                                
       u   读无符号十进制整数                                      
      [ ]  扫描字符集合                                            
       %   读 % 符号(百分号)                                       
    
    例如: %s 表示读串而 %d 表示读整数。格式串的处理顺序为从左到右,格式说明符逐一与变元表中的变元匹配。为了读取长整数,可以将 l(ell) 放在格式说明符的前面;为了读取短整数,可以将 h 放在格式说明符的前面。这些修饰符可以与 d、i、o、u 和 x 格式代码一起使用。

    默认情况下,a、f、e 和 g 告诉 scanf() 为 float 分配数据。 如果将 l(ell) 放在这些修饰符的前面,则 scanf() 为 double 分配数据。使用 L 就是告诉 scanf(),接收数据的变量是 long double 型变量。

    如果使用的现代编译器程序支持 1995 年增加的宽字符特性, 则可以与 c 格式代码一起,用 l 修饰符说明类型 wchar_t 的宽字符指针;也可以与 s 格式代码一起,用 l 修饰符说明宽字符串的指针。l 修饰符也可以用于修饰扫描集,以说明宽字符。

    控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白符使 scanf() 在输入流中读,但不保存结果,直到发现非空白字符为止。

    非空白符使 scanf() 在流中读一个匹配的字符并忽略之。例如,"%d,%d" 使 scanf() 先读入一个整数,读入中放弃逗号,然后读另一个整数。如未发现匹配,scanf() 返回。

    scanf() 中用于保存读入值的变元必须都是变量指针,即相应变量的地址。

    在输入流中,数据项必须由空格、制表符和新行符分割。逗号和分号等不是分隔符,比如以下代码:
    scanf( "%d %d", &r, &c );
将接受输入 10 20,但遇到 10,20 则失败。

    百分号(%)与格式符之间的星号(*)表示读指定类型的数据但不保存。因此,
    scanf( "%d %*c %d", &x, &y );
对 10/20 的读入操作中,10 放入变量 x,20 放入 y。

    格式命令可以说明最大域宽。 在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。例如,希望向 address 读入不多于 20 个字符时,可以书写成如下形式:
    scanf( "%20s", address );

    如果输入流的内容多于 20 个字符,则下次 scanf() 从此次停止处开始读入。 若达到最大域宽前已遇到空白符,则对该域的读立即停止;此时,scanf() 跳到下一个域。

    虽然空格、制表符和新行符都用做域分割符号,但读单字符操作中却按一般字符处理。例如,对输入流 "x y" 调用:
    scanf( "%c%c%c", &a, &b, &c );
返回后,x 在变量 a 中,空格在变量 b 中,y 在变量 c 中。

    注意,控制串中的其它字符,包括空格、制表符和新行符,都用于从输入流中匹配并放弃字符,被匹配的字符都放弃。例如,给定输入流 "10t20",调用:
    scanf( "%dt%d", &x, &y );
将把 10 和 20 分别放到 x 和 y 中,t 被放弃,因为 t 在控制串中。

    ANSI C 标准向 scanf() 增加了一种新特性,称为扫描集(scanset)。 扫描集定义一个字符集合,可由 scanf() 读入其中允许的字符并赋给对应字符数组。 扫描集合由一对方括号中的一串字符定义,左方括号前必须缀以百分号。 例如,以下的扫描集使 scanf() 读入字符 A、B 和 C:
    %[ABC]

    使用扫描集时,scanf() 连续吃进集合中的字符并放入对应的字符数组,直到发现不在集合中的字符为止(即扫描集仅读匹配的字符)。返回时,数组中放置以 null 结尾、由读入字符组成的字符串。

    用字符 ^ 可以说明补集。把 ^ 字符放为扫描集的第一字符时,构成其它字符组成的命令的补集合,指示 scanf() 只接受未说明的其它字符。
    对于许多实现来说,用连字符可以说明一个范围。 例如,以下扫描集使 scanf() 接受字母 A 到 Z:
    %[A-Z]
    重要的是要注意扫描集是区分大小写的。因此,希望扫描大、小写字符时,应该分别说明大、小写字母。
    scanf() 返回等于成功赋值的域数的值,但由于星号修饰符而读入未赋值的域不计算在内。给第一个域赋值前已出错时,返回 EOF。

    C99 为 scanf() 增加了几个格式修饰符:hh、ll、j、z 和 t。hh 修饰符可用于 d、i、o、u、x、X 或 n。它说明相应的变元是 signed 或 unsigned char 值,或用于 n 时, 相应的变元是指向 long char 型变量的指针。ll 修饰符也可用于 d、i、o、u、x、X 或 n。它说明相应的变元是 signed 或者 unsigned long long int 值。
    j 格式修饰符应用于 d、i、o、u、x、X 或 n,说明匹配的变元是类型 intmax_t 或 uintmax_t。这些类型在 <stdint.h>; 中声明,并说明最大宽度的整数。
    z 格式修饰符应用于 d、i、o、u、x、X 或 n,说明匹配的变元是指向 size_t 类型对象的指针。该类型在 <stddef.h>; 中声明,并说明 sizeof 的结构。
    t 格式修饰符应用于 d、i、o、u、x、X 或 n,说明匹配的变元是指向 ptrdiff_t  类型对象的指针。该类型在 <stddef.h>; 中声明,并说明两个指针之间的差别。

例子:

# include <stdio.h>;
int main( void )
{
    char str[80], str2[80];
    int i;
 /* read a string and a integer */
    scanf( "%s%d", str, &i );
 /* read up to 79 chars into str */
    scanf( "%79s", str );
 /* skip the integer between the two strings */
    scanf( "%s%*d%s", str, str2 );
  return 0;
}

再看一下为什么linux中用不起来fflush:

C/C++ 误区二:fflush(stdin) 

来 源:蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:精品 
发布于2005-10-22 13:56 被读12809次 【字体:大 中 小】

Antigloss 最后修改于 2006-11-25

 

1.       为什么 fflush(stdin) 是错的

 

首先请看以下程序:

 

                   #include <stdio.h>

 

int main( void )

{

    int i;

    for (;;) {

        fputs("Please input an integer: ", stdout);

        scanf("%d", &i);

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

    }

    return 0;

}

 

这个程序首先会提示用户输入一个整数,然后等待用户输入,如果用户 输入的是整数,程序会输出刚才输入的整数,并且再次提示用户输入一个整数,然后等待用户输入。但是一旦用户输入的不是整数(如小数或者字母),假设 scanf 函数最后一次得到的整数是 2 ,那么程序会不停地输出“Please input an integer: 2”。这是因为 scanf("%d", &i); 只能接受整数,如果用户输入了 字母,则这个字母会遗留在“输入缓冲区”中。因为缓冲中有数据,故而 scanf 函数不会等待用户输入,直接就去缓冲中读取,可是缓冲中的却是字母,这个字母再次被遗留在缓冲中, 如此反复,从而导致不停地输出“Please input an integer: 2”。

 

也许有人会说:“居然这样,那么在 scanf 函数后面加上‘fflush(stdin);’,把输入 缓冲清空掉不就行了?”然而这是错的!C和C++的标准里从来没有定义过 fflush(stdin)。也许有人会说:“可是我用 fflush(stdin) 解决了这个问题,你怎么能说是错的呢?”的确,某些编译器(如VC6)支持用fflush(stdin) 来清空输入缓冲,但是并非所有 编译器都要支持这个功能(linux 下的 gcc 就不支持),因为标准中根本没有定 义fflush(stdin)。MSDN 文档里也清楚地写着fflush on input stream is an extension to the C standard(fflush 操作输入流是对 C 标准的扩充)。当然,如果你毫不在乎程序的移 植性,用 fflush(stdin) 也没什么大问题。以下是 C99 对 fflush 函数的定义:

 

int fflush(FILE *stream);

 

如果 stream 指向输出流或者更新流(update stream),并且这个更新流
最近执行的操作不是输入,那么 fflush 函数将把这个流中任何待写数据传送至
宿主环境(host environment)写入文件。否则,它的行为是未 定义的。

原文如下:


int fflush(FILE *stream);

If stream points to an output stream or an update stream in which
the most recent 
operation was not input, the fflush function causes
any unwritten data for that 
stream to be delivered to the host environment
to be written to the file; 
otherwise, the behavior is undefined.

 

其中,宿主环境可以理解为操作系统或内核等。

 

    由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用 fflush(stdin)  是不正确的,至少是移植性不好的。

 

 

2.       清空输入缓冲区的方法

 

 虽然不可以用 fflush(stdin),但是我们可以自己写代码来清空输入缓冲区。只需要在 scanf 函数后面加上几句简单的代码就可以了。

        
/* C 版本 */
        #include <stdio.h> 


        int main( void )
        {
            int i, c;
   
           for ( ; ; )
            {
                fputs("Please input an integer: ", stdout);
                scanf("%d", &i);

             if ( feof(stdin) || ferror(stdin) )
                { /* 如果用户输入文件结束标志(或文件已被读完), */
                  /* 或者发生读写错误,则退出循环               */
            
                    /* do something */
                    break;
                }
                /* 没有发生错误,清空输入流。                 */
                /* 通过 while 循环把输 入流中的余留数据“吃”掉 */
                while ( (c = getchar()) != '\n' && c != EOF ) ;
                /* 使用 scanf("%*[^\n]"); 也可以清空输入流, */

               /* 不过会残留 \n 字符。                          */

               printf("%d\n", i);
            }

             return 0;
        }

B+树的c语言代码实现 c语言的代码实现B+树。基于文件操作。模拟B+树的建立索引 立即下载

相关推荐

深入解析西门子S7通信协议:从抓包到实战应用

本文深入解析西门子S7通信协议,从环境搭建、抓包分析到实战应用,提供了一套完整的协议分析方法。通过Wireshark工具进行抓包分析,详细拆解了S7协议各层结构,并结合真实案例,展示了如何利用抓包技术解决通信故障、优化性能及进行安全审计,是掌握工业通信底层原理的实用指南。

weixin_29224529的博客 282

scanf()函数剖析

scanf函数我曾经在 这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!(我的邮箱:moongbingbing@gmail.com    blog: http://blog.youkuaiyun.com/wayne92       温铭 )有关详细的scanf函数解释,大家可以去看看《C程序设计语言》(K&C)和《C语言大全》(后面我把其中scanf的部 分贴了出来)。曾经错的几个地方:(xpsp2,

lwhhubei的专栏 766

【Unity】【模型】【AI建模】如何将AI生成的GLB格式3D模型文件导入Unity

本文介绍了一个将AI工具自动生成的GLB格式3D模型文件转换成fbx模型文件导入Unity的步骤。

O青草O的博客 Unity和游戏制作知识分享 1358

scanf/fscanf/sscanf和printf/fprintf/sprintf的辨析

有关于scanf/fscanf/sscanf和printf/fprintf/sprintf的辨析

#include>的博客 148

Matlab编码转换实战:从GBK到UTF-8的完整解决方案

本文提供Matlab编码转换的完整实战方案,重点解决GBK与UTF-8编码冲突导致的中文乱码问题。通过修改系统配置文件、批量转换项目文件及设置默认保存编码,实现从GBK到UTF-8的彻底迁移,并分享常见避坑指南与自动化脚本技巧,确保代码跨平台协作的稳定性。

weixin_29031057的博客 325

Claude + Figma MCP 实战教程

• 拥有 Figma 的 Dev 或 Full seat(专业/企业账号)权限 才能启用 Dev-Mode MCP 服务 。• MCP 是通过标准接口连接 Claude 与 Figma,效率高,但目前仍为 Beta,稳定性可能有限。3. 服务启动后,会在本地运行,比如 http://127.0.0.1:3845/mcp 。如果设置正确,会显示已连接的 figma-dev-mode-mcp-server  。• 如果多次转换复杂组件,可能需要多次选择与多次生成,建议合理拆分设计任务。

weixin_49869937的博客 4451

VS中的scanf和scanf_s

一:scanf() 和scanf_s()的区别

m0_67254355的博客 3233

CTFshow-pwn入门-前置基础pwn32-pwn34

CTFshow-pwn入门-前置基础pwn32-pwn34

你们de4月天的博客 1132

谈论vs中的scanf和scanf_s c语言

至于scanf_s的返回值以及更多了解,这里不多作介绍,因为sacnf_s只是vs中才会用到,不是我们的c语言标准语法,建议在vs中使用scanf,而不是scanf_s,比起scanf_s这个特殊函数,scanf更符合我们的c标准。4. scanf_s 的使用和scanf的差不多,他不需要。只需包含头文件stdio.h,(是不是bug)求解。

kukubuzai的博客 538

Kubernetes集群资源优化实战:Volcano调度器如何帮你省下30%GPU算力

本文详细介绍了如何通过Volcano调度器的Binpack策略优化Kubernetes集群中的GPU资源利用率,解决AI模型训练中的资源碎片化问题。通过实战配置和调优指南,帮助用户提升30%的GPU算力利用率,显著降低任务等待时间和硬件成本。

weixin_30832143的博客 507

Java全栈:电影数据检索与推荐系统实战

全文检索个性化推荐数据缓存容器化部署通过这个项目,我们不仅实践了Java全栈开发的各项技术,还接触了推荐系统的核心算法实现。用户历史行为数据物品特征数据上下文信息实时反馈算法的准确性推荐的多样性系统的实时性冷启动问题性能优化效果评估VIEW, // 浏览CLICK, // 点击SEARCH, // 搜索RATE, // 评分COMMENT, // 评论SHARE, // 分享WATCH_TIME, // 观看时长。

exlink2012的专栏 891

C语言scanf函数用法完全攻略

本节介绍输入函数 scanf 的用法。scanf 和 printf 一样,非常重要,而且用得非常多,所以一定要掌握。 概述 scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”。该函数的原型为: # include <stdio.h> int scanf(const char *format, ...); 它有两种用法,或者说有两种格式。 1) scanf("输...

jacklin_01的博客 11万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

getchar()getch()scanf()EOF—学习总结

大一开学已经有两个月了,我之前从没有想到大学是这么的忙,尤其是这段时间,每天5个小时的睡眠让我不堪重负。 前段时间学习c语言时发现了些问题,总该记录一下: 首先是getchar()函数,记得以前我基本上是用它来做停顿用的,能让exe在windows环境下运行后不直接退出,可下面的代码发现了问题: #include #define N 30 void rd(int i,int k); int

岁月流风、、 1241

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

scanf()问题学习

scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Dennis M.Ritchie的“hello,world”程序基本上是所有的C语言学习者第一个范例),所以scanf()函数应当是C

fengskill的专栏 322

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

关于学习getchar()和scanf()时问题

一、getchar()函数: getchar()函数的原型为 int getchar(void):该函数不带形参,返回值为int型,成功时,返回值为字符的ASCII码,出错是为-1.getchar()函数只对字符起作用,在stdio.h中定义,其实是个宏定义函数,是getc(stdin)的宏定义。如果用户在按回车之前,输入了多个字符,除第一个字符外其他保留在缓冲区中,等待后续函数调用读取

head555的博客 2031

scanf()的学习记录

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34391854的博客 90

C Primer Plus学习_6之printf()和scanf()【下】

终于到scanf()了。 先说说我的理解吧,scanf()函数和printf()函数某种意义上是对立的,或者说是互补的。为什么这么说呢? scanf()函数将输入的文本转换成整数、浮点数、字符、字符串,而printf()则相反。 scanf()函数和printf()函数也有相同点,都要使用格式字符串和参数列表。scanf()函数的格式字符串表明了字符输入流的目标数据类型。两个函数的区别...

Shawn_RJF的博客 252

C Primer Plus学习_6之printf()和scanf()【上】

printf()函数在最初就涉及到了,现在拿出来更具体的讲一讲。(其实也不是我想这样的,都怪C Primer Plus,是它又拿出来讲,作为学习笔记兼学习教程当然是不可以省略的)。不同的是,这里不仅讲述printf(),还讲述scanf()。printf()函数和scanf()函数能让用户与程序交流,他们是输入输出函数简称I/O函数。二者的工作原理几乎相同,都使用格式字符串和参数列表。知道你看不懂...

Shawn_RJF的博客 269

scanf()函数学习-关键知识点

scanf()函数基本功能:执行格式化输入; 用法:int scanf(char *format[,argument...]);返回值为正确输入变量的个数; 需要注意的知识点: (1)对含空格字串的处理:          scanf()函数在处理含空格的字串时,会将字串空格后面的内容舍弃,遇到空格读取结束,eg.  scanf("%s",&str); str="ab cd"时,str="

huangxc1990的博客 620

C Primer Plus学习 五 研究和利用printf ()和scanf ()

printf ()和scanf ()函数使您能够与程序通信。它们被称为输入/输出函数,或者被简称为I/O函数。它 们不是只有您可以使用的C I/O函数,而且是最通用的I/O函数。        printf ()打印变置的指令取决于变量的类型。例如,在打印整数时使用%d符号,而在打印字符 时使用%c符号。 /* pizza.c — /I:这个比萨饼的例/'中使用定义'*/ #in

mylove10086 633

getchar()getch()scanf()EOF—学习总结(转)

大一开学已经有两个月了,我之前从没有想到大学是这么的忙,尤其是这段时间,每天5个小时的睡眠让我不堪重负。 前段时间学习c语言时发现了些问题,总该记录一下: 首先是getchar()函数,记得以前我基本上是用它来做停顿用的,能让exe在windows环境下运行后不直接退出,可下面的代码发现了问题: [cpp] view plaincopy #i

坚持 599

C语言学习(一):printf()和scanf()的用法

如果在程序中要使用 printf()或者 scanf(),那么就必须要包含头文件 stdio.h。因为这两个函数就是包含在该头文件中的。 1.printf()的用法如下: 用法一:printf("字符串\n");//\n:换行 printf("JACK ROSE"); 用法二:printf("输出控制符",输出参数); int i = 10; printf("%d",i); 用法三:...

NJUPT_MSC的博客 3445

C语言学习笔记(2)——prinf()和scanf()

printf ()和scanf ()函数使您能够与程序通信。它们被称为输入输出函数,或者被简称为I/O函数。

weixin_46766427的博客 662

[记录学习][C基础017] scanf()函数

scanf()函数可以读取不同格式的数据。 从键盘上输入的都是文本,因为键盘上只能生成文本字符:字母、数字和标点符号。如果要输入整数2021,就要键入字符2、0、2、1.如果要将其存储为数值,而不是字符串,程序就必须把字符依次转化为数值,这就是scanf()要做的。 scanf()把输入的字符串转换成整数、浮点数、字符或者字符串,而printf()正好和它相反。 scanf()和printf()类似,也使用格式字符串和参数列表。scanf()中的格式字符串表明字符输入流的目标数据类型。 两个函数主要

A707684133的博客 244
下一篇: 对enum的探讨
SVKING
博客等级 码龄16年 14粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值