printf失败返回值(VS2015中为什么使用scanf_s %s输入字符串后printf()不能打印 如图所示)
本文目录
- VS2015中为什么使用scanf_s %s输入字符串后printf()不能打印 如图所示
- printf语句中各个参数代表什么
- printf的返回值是什么
- printf函数有没有返回值
- 一道关于c语言代码的题目,求大佬指点迷津
- C语言 while(printf(“*“))是什么意思
- printf返回值怎么算的啊
- c语言:我想输出printf的返回值,但是编译老不通过,为什么谢谢啦~
VS2015中为什么使用scanf_s %s输入字符串后printf()不能打印 如图所示
请看正确答案:你的代码写的是str,2. 此时只能输入1个字符。你输入了"as"2个字符,已经把str,2撑爆了。你的scanf_s的运行结果,返回值一定是0,扫描失败了!!扫描失败了str里面就是随机值,一般是0,你打印的话就什么都没有显示了。你如果想输入as,那个scanf_s的参数必须是至少3,才对,scanf_s返回值才可能是1。总之代码一定要检查函数返回值,来保证逻辑可靠!
printf语句中各个参数代表什么
printf中分别代表的输出类型:
%a(%A):浮点数、十六进制数字和p-(P-)记数法(C99)
%c:字符
%d:有符号十进制整数
%f:浮点数(包括float和doulbe)
%e(%E):浮点数指数输出
%g(%G):浮点数不显无意义的零"0"
%i:有符号十进制整数(与%d相同)
%u:无符号十进制整数
%o:八进制整数 e.g. 0123
%x(%X):十六进制整数0f(0F) e.g. 0x1234
%p:指针
%s:字符串
%%:"%"
扩展语句:
C语言中printf语句的简介:
printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。
函数原型:int printf ( const char * format, ... );
返回值:
正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志。
调用格式:
printf()函数的调用格式为:printf("格式化字符串",输出表列)。
格式化字符串包含三种对象,分别为:
(1)字符串常量;
(2)格式控制字符串;
(3)转义字符。
字符串常量原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式控制字符串和各输出项在数量和类型上应该一一对应。其中格式控制字符串是以%开头的字符串,在%后面跟有各种格式控制符,以说明输出数据的类型、宽度、精度等。
参考资料:百度百科-C语言
CSDN论坛-printf语句详解
printf的返回值是什么
在stdio.h头文件中:int _Cdecl printf (const char *format, ...);可见printf()函数返回的是int型值,你也可以用sizeof函数测试这个结果.一、 从printf()开始 从大家都很熟悉的格式化字符串函数开始介绍可变参数函数。 原型:int printf(const char * format, ...); 参数format表示如何来格式字符串的指令,… 表示可选参数,调用时传递给"..."的参数可有可无,根据实际情况而定。 系统提供了vprintf系列格式化字符串的函数,用于编程人员封装自己的I/O函数。 int vprintf / vscanf(const char * format, va_list ap); // 从标准输入/输出 格式化字符串 int vfprintf / vfsacanf(FILE * stream, const char * format, va_list ap); // 从文件流 int vsprintf / vsscanf(char * s, const char * format, va_list ap); // 从 字符串 // 例1:格式化到一个文件流,可用于日志文件 FILE *logfile; int WriteLog(const char * format, ...) { va_list arg_ptr; va_start(arg_ptr, format); int nWrittenBytes = vfprintf(logfile, format, arg_ptr); va_end(arg_ptr); return nWrittenBytes; } … // 调用时,与使用printf()没有区别。 WriteLog("%04d-%02d-%02d %02d:%02d:%02d %s/%04d logged out.", nYear, nMonth, nDay, nHour, nMinute, szUserName, nUserID); 同理,也可以从文件中执行格式化输入;或者对标准输入输出,字符串执行格式化 。 在上面的例1中,WriteLog()函数可以接受参数个数可变的输入,本质上,它的实现 需要vprintf()的支持。如何真正实现属于自己的可变参数函数,包括控制每一个传 入的可选参数。 二、 va函数的定义和va宏 C语言支持va函数,作为C语言的扩展--C++同样支持va函数,但在C++中并不推荐使 用,C++引入的多态性同样可以实现参数个数可变的函数。不过,C++的重载功能毕 竟只能是有限多个可以预见的参数个数。比较而言,C中的va函数则可以定义无穷多 个相当于C++的重载函数,这方面C++是无能为力的。va函数的优势表现在使用的方 便性和易用性上,可以使代码更简洁。C编译器为了统一在不同的硬件架构、硬件平 台上的实现,和增加代码的可移植性,提供了一系列宏来屏蔽硬件环境不同带来的 差异。 ANSI C标准下,va的宏定义在stdarg.h中,它们有:va_list,va_start(),va_ar g(),va_end()。 // 例2:求任意个自然数的平方和: int SqSum(int n1, ...) { va_list arg_ptr; int nSqSum = 0, n = n1; va_start(arg_ptr, n1); while (n 》 0) { nSqSum += (n * n); n = va_arg(arg_ptr, int); } va_end(arg_ptr); return nSqSum; } // 调用时 int nSqSum = SqSum(7, 2, 7, 11, -1); 可变参数函数的原型声明格式为: type VAFunction(type arg1, type arg2, … ); 参数可以分为两部分:个数确定的固定参数和个数可变的可选参数。函数至少需要 一个固定参数,固定参数的声明和普通函数一样;可选参数由于个数不确定,声明 时用"…"表示。固定参数和可选参数公同构成一个函数的参数列表。 借助上面这个简单的例2,来看看各个va_xxx的作用。 va_list arg_ptr:定义一个指向个数可变的参数列表指针; va_start(arg_ptr, argN):使参数列表指针arg_ptr指向函数参数列表中的第一个 可选参数,说明:argN是位于第一个可选参数之前的固定参数,(或者说,最后一 个固定参数;…之前的一个参数),函数参数列表中参数在内存中的顺序与函数声 明时的顺序是一致的。如果有一va函数的声明是void va_test(char a, char b, c har c, …),则它的固定参数依次是a,b,c,最后一个固定参数argN为c,因此就是 va_start(arg_ptr, c)。 va_arg(arg_ptr, type):返回参数列表中指针arg_ptr所指的参数,返回类型为ty pe,并使指针arg_ptr指向参数列表中下一个参数。 va_copy(dest, src):dest,src的类型都是va_list,va_copy()用于复制参数列表 指针,将dest初始化为src。 va_end(arg_ptr):清空参数列表,并置参数指针arg_ptr无效。说明:指针arg_pt r被置无效后,可以通过调用va_start()、va_copy()恢复arg_ptr。每次调用va_st art() / va_copy()后,必须得有相应的va_end()与之匹配。参数指针可以在参数列 表中随意地来回移动,但必须在va_start() … va_end()之内。
printf函数有没有返回值
printf函数有返回值,其函数原型为:
int printf(const char*,...);
printf函数返回一个int类型的数值,代表被输出的字符总数。
以下示例演示printf的返回值:
#include 《stdio.h》int main(){ int a = printf("Hello world!\n"); // 输出字符串并将printf函数返回值赋给a printf("%d\n",a); // 输出a的值 return 0;}
程序运行后输出:
一道关于c语言代码的题目,求大佬指点迷津
#include 《stdio.h》/*如果用数组的话必须设置一个元素代表删除的数这里用"-1",链表的话就不用了删除直接释放内存就好*/void CreatArray();int FindNum();void PrintNum();int num = { 0 };//初始化数组int main(){CreatArray(); if (FindNum() == 1)PrintNum();elseprintf("查找失败,没有这个元素!");getchar();return 0;}void CreatArray(){printf("输入10位数:");for (int i = 0; i 《 10; i++)scanf("%d", #);}int FindNum(){int m = 0;//查找失败返回值int x;printf("输入你要查找的元素:");scanf("%d", &x);for (int i = 0; i 《 10; i++){if (num == x){for (; i 《 9; i++) //删除的数之后的数往前移num;num = -1;m = 1;}}return m;}void PrintNum(){printf("删除后的数为:");for (int i = 0; i 《 10; i++){if (num == -1)break; //如果找到-1结束查找elseprintf("%d ", num); //打印-1之前的元素}printf("\n");}
C语言 while(printf(“*“))是什么意思
while(printf("*")) 表示打印*成功,则继续执行while循环体中的内容,否则跳出while循环。
理解while(printf("*")),关键是要知道printf函数的返回值是什么。
printf函数的返回值是打印字符的个数,如:
int a = printf("%d", 123); printf("%d", a); // 输出3,因为打印123是三个字符
根据printf函数的返回值,不难理解while(printf("*")) ,如果打印成功,即返回1(while条件为真),否则返回0(while条件为假)
printf返回值怎么算的啊
printf返回的是输出的字符数,注意是字符数,212是3个字符 212 F is water’s boiling point. 这是31个字符,加上\n就是32
c语言:我想输出printf的返回值,但是编译老不通过,为什么谢谢啦~
printf("%d",printf(""));的分号是中文输入法的全角分号,换成英文输入法的半角分号就行了,
更多文章:
jquery设置select选中(jquery怎么根据value来动态选中select下的option)
2024年7月13日 01:01
fished out(fish out的用法fish out是不是捕捞的意思每天捕捞鱼能用fish out这短语吗怎么用英文说)
2024年8月27日 17:05
nginx负载均衡数据库(nginx负载均衡怎么访问数据库)
2024年7月22日 02:34
用于字符串比较的库函数是(函数sstrcmp()的功能是对两个字符串进行比较)
2024年7月24日 07:56
teamviewer(teamviewer和teamviewer host有什么区别求指教)
2024年7月23日 09:33
简述for与foreach语句的区别(for in,for of, for,forEach,map的区别)
2024年7月12日 09:57
nginx停止和启动命令(重启nginx服务器用哪个指令比较好)
2024年6月13日 12:58
部署图显示代码本身的结构(用图形画出一个web程序部署在tomcat的基本目录结构)
2024年3月15日 05:50
conservative party(conservative什么意思)
2024年5月3日 09:53
java中相等怎么表示(java怎么比较两个字符串是否相等)
2024年6月15日 03:08
setinterval越来越快(setinterval速度重叠)
2024年7月16日 17:48
数控css和rpm什么意思(数控车床操作键盘上26个字母,分别是什么意思啊)
2024年7月23日 12:25
json格式化工具有哪些(有哪些方法可以将JSON格式的数据集转化为EXCEL格式)
2024年7月18日 04:18