因此,当ptr指向的内存地址中包含空格时,printf("%s", ptr)仍然可以正确地输出整个字符串,因为它会在遇到空格时停止读取,而不是在遇到空格时就停止输出。这就是为什么printf("%s", ptr)能够取消引用空格。 相关搜索: 为什么printf中不同的数组取消引用会产生相同的输出?
%s 读入一个字符串,遇空格、制表符或换行符结束。 %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。 %p 读入一个指针。 %u 读入一个无符号十进制整数。 %n 至此已读入值的等价字符数。 %[] 扫描字符集合。 %% 读 % 符号 实例: scanf("%d,%d,%d",&a,&b,&c); // 从键盘输入三...
"%s"是不行的,因为%s遇到空白字符(空格、制表符、\r、\n)就结束了,所以可以写成 "%[^\n]%*c",%[^\n]的作用刚才讲过了,就是读\n之外的所有字符,也就是说读到\n为止,%*c的作用就是把\n去掉,否则再次读的时候一直遇到的都是\n;所有对%s起作用的控制,都可以用于%[],比如"%*[^\n]%*c"就表...
scanf()函数取数据是遇到回车、空格、TAB就会停止,如例1,第一个scanf()会取出"Hello",而"world!"还在缓冲区中,这样第二个scanf会直接取出这些数据,而不会等待从终端输入。 例1: #include <stdio.h> int main() { char str1[20], str2[20]; scanf("%s",str1); printf("%s\n",str1); scanf("%...
百度试题 题目在printf函数中用“%s”格式符输入字符串时,空格和回车可以被读入。( ) 相关知识点: 试题来源: 解析 错误
printf("%s\n", a.c_str()); 4. 对于string类型,用下述方法输入:先读取char[], 再把char[]转成string。 scanf中的%s遇到空格或者换行就会停止读取,读取之后的strlen(s)和str.length()也是相等的,不会出现问题。 //方法一intt;chars[15];
%s 读入一个字符串,遇空格、制表符或换行符结束。 %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。 %p 读入一个指针。 %u 读入一个无符号十进制整数。 %n 至此已读入值的等价字符数。 %[] 扫描字符集合。 %% 读 % 符号 实例: ...
这个例子中,%d表示输出一个整数,%s表示输出一个字符串,%f表示输出一个浮点数。 然而,不同的编译器或平台对printf格式说明符的支持程度可能不同,因此可能会出现一些不兼容的情况。例如,某些编译器可能不支持某些格式说明符,或者对某些格式说明符的支持程度有限。 为了解决这个问题,可以使用条件编译来针对不同的平台或...
%x(%X) 十六进制整数0f(0F) e.g. 0x1234 %p 指针 %s 字符串 %% "%" 2.标志 左对齐:"-" e.g. "%-20s" 右对齐:"+" e.g. "%+20s" 空格:若符号为正,则显示空格,负则显示"-" e.g. "% 6.2f" #:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x; ...
include <stdio.h> int main(void){ int i=2;printf("start:%*s:end",i,"");//最小域宽可精度用*可以在参数指定, 这里的最小域宽会按i的值补空格 return 0;}