C语言 printf("%s",p)

如题所述

第1个回答  2022-07-03

char p 首先它是一个常量,如果是char p[10] = {};那么它就是一个变量。常量的值只可以读取不可以写入,变量的值可读可写。
在用printf语句打印%s的时候,printf语句要求提供字符串首地址。这是printf所规定的,也就是看到%s,printf就要求指针变量,而不是我们逻辑上认为的指针里面所存储的内容。所以用printf("%s",p);而不是printf("%s",
p); 这一点必须记住。如果用%c,想输出里面的内容就可以按照正常的指针概念,用*p了。可以执行一下这一条语句char * p = "string pointer dam fucking sucks!"; printf("%s\n%p\n%c\n", p, p, *p);

你会发现c实际上没有string类型。那么c的%s怎么来的呢?用char数组代替。那么%s如何工作?它会从所给指针指向的位置开始,逐字符的打印输出,直到遇到“/n”或者“/0”。所以%s需要的只是一个指针值。(或者说数组第一个值的内存地址)读取了第一个值后,它会跳到后面的位置继续读取,这建立在你传给它的值是指针的前提上。如果你用了 ,结果只得到了第一个字符而没有指针( 表示取出指针所指位置保存的值),程序不知道后续字符的储存位置,它去哪里找?再说%d,%d只打印一个十进制数值,不需要后续继续打印,所以直接给它这个数值就行了。(*是什么意思不需要我再说一遍了吧?)

C语言 printf("%s",p)
这是printf所规定的,也就是看到%s,printf就要求指针变量,而不是我们逻辑上认为的指针里面所存储的内容。所以用printf("%s",p);而不是printf("%s", p); 这一点必须记住。如果用%c,想输出里面的内容就可以按照正常的指针概念,用*p了。可以执行一下这一条语句char * p = "string pointer dam...

c语言编程 问题一: char p[10]; scanf("%s",p); printf("%s"
p是长度10的数组,是内存里的一段区域。但C语言没有边界检测,比如你访问p[20]就是原来数组内存区域后面的部分。如果运气好那段内存没有被用,你就能用。这是程序漏洞,一定要避免,很多黑客攻击都是通过这种搞出来的。p只是一个指针,一个路标,没有实际的内存空间。你可以这样:char a[10];char*...

C语言 char *p="abcde"; printf("%s",p);正确;;;char *p="abcde"; pr...
语句printf("%s",*p);会出错,因为%s表示输出字符串,而*p则是指向的字符串的第一个字符,请改成printf("%c",*p);则输出a,改成printf("%d",*p);则输出97,原因分析:char *p="abcde",则字符指针p指向字符串,p的值就是字符串首字符的地址,*p就是第一个字符。

C语言中printf函数中%s是什么意思
c在C语言中代表字符型格式符。s在C语言中代表字符串型格式符。c和%s一般用在printf、sprintf等字符串格式化函数中,用于决定格式化参数的数据类型。如printf("%s", a)会将变量a作为字符串类型进行格式化。printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格...

c语言填空题?
最后打印%s应该对应p,而不是*p。如果最后改成printf("%s",p);那么for循环,p初始指向s首地址,p<s+2;p++,也就是说循环执行2次,分别是p指向s[0]的地址和p指向s[1]的地址。那么2次循环打印的字符串就是“9876”和“876”,由于打印没有换行,所以最后打印的就是9876876。

c语言输出%s
所以如果printf("%"),会默认为缺少转义字符,打印不出来任何字符。所以printf("\\045")的实际功能就是printf("%"),缺少转义字符。printf("\\044")是可以输出$的。要输出%号只有将其作为第一个%后面的字符输出,所以最后会输出%s这两个字符 cpp这本书会详解这些细节的,推荐去看 ...

C语言中printf函数中%s是什么意思
s表示以字符串的形式输出!

C语言中printf中%c是什么意思?
这是C语言的格式输出,%c,%y这些代表你要输出的数据的数据类型;%d 表示输出十进制有符号的整数。1、%u 十进制无符号整数。2、%f 表示输出浮点数。3、%s表示输出 字符串。4、%c表示输出单个字符。5、%p表示输出指针的值。6、%e表示输出指数形式的浮点数。7、%x, %X 表示输出无符号以十六进制表示...

printf()% s是什么意思?
详细解释如下:1. %s的含义 在C语言中,%s是一个格式说明符,用于表示字符串。当我们在printf或者scanf函数中使用%s时,它告诉函数该位置应该插入或读取一个字符串。2. 在printf函数中的应用 当我们使用printf函数输出字符串时,%s用来指定字符串应该放在输出的哪个位置。例如:c printf;这里,%s就像一...

c语言中%s是什么意思
<p>%s是一种字符串的输出格式说明符,输出字符串。<\/p><p><br \/><\/p><p>%s需要配合printf函数一起使用,如下所示:<\/p><pre t="code" l="cpp">printf("%s", "adfds"); \/\/ 输出字符串adfds<\/pre>

相似回答
大家正在搜