社区
C语言
帖子详情
关于printf()输入的一点问题~
zkeagle
2006-04-22 11:08:03
偶然见了一句这样的代码~
printf("%s","*******"+5);
屏幕输出时2个星号
**
不太明白
为什么"*******"+5会等于"**" ?
这里的+号到底做了什么样的运算?
...全文
232
14
打赏
收藏
关于printf()输入的一点问题~
偶然见了一句这样的代码~ printf("%s","*******"+5); 屏幕输出时2个星号 ** 不太明白 为什么"*******"+5会等于"**" ? 这里的+号到底做了什么样的运算?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
C_520
2006-04-23
打赏
举报
回复
+5,应该是打印的地址向后移动了吧,我觉得是,知道的出来给大家讲讲.
sunjie_nuaa
2006-04-23
打赏
举报
回复
"*******"为字符串首地址
+5为地址后移5
sevencat
2006-04-23
打赏
举报
回复
printf("%s",&"*******"[5]);亦可。
niatclock
2006-04-23
打赏
举报
回复
+5表示指针后移
通过楼上一位兄长提过的程序段如:
for(int i=0;i<7;i++)
printf("%s\n","*******"+i);
不同的i的值对应的输出,可更为清楚的理解了
而Printf作为输出函数只是输出对应指针位置的数或字符串而以
臭小子
2006-04-23
打赏
举报
回复
printf("%s*******",+5);
爱我的人请呼吸
2006-04-23
打赏
举报
回复
这个偶还没用过的说
ENOUGH_XU
2006-04-23
打赏
举报
回复
#include <iostream.h>
#include <stdio.h>
int main()
{
char *p="4646744313114854613";;
char a[]="4646744313114854613";
//p=a;
for(int i=0;i<sizeof(a)/sizeof(char);i++)
{ printf("%s",(p+i));
printf("\n");
}
return 0;
}
/*
int main()
{
char *p;
char a[]="4646744313114854613";
p=a;
for(int i=0;i<sizeof(a)/sizeof(char);i++)
{ cout<<*a[i];
cout<<endl;
}
return 0;
}*/其实,这两个是一样的,只是输出的形式不一样
ENOUGH_XU
2006-04-23
打赏
举报
回复
是的,是指针后移.其实,如一个数组:char a[20]={.....};char *p=a;这样的话是把啊的首地址给了p,同样:char *p="......";这里同样的是把这个字符串的首地址给p,所以"...."+i,其实就像数组一样的.印象中,在C里面好象还有经典的问题关于这个.
chenhu_doc
2006-04-22
打赏
举报
回复
for(int i=0;i<7;i++)
printf("%s\n","*******"+i);
...对,就用这个,通过不同的i的值对应的输出,就可以揣摩出实现的机制了
厦门德仔
2006-04-22
打赏
举报
回复
#include <stdio.h>
void main()
{
int i,m=1;
for(i=0;i<19;i++)
{
// %*s\n *表示控制宽度,s字符串
// m<=10?10+m :30-m 表示输出的位置,
// (m<=10?20-2*m:2*m-20)控制输出的个数
printf("%*s\n",m<=10?10+m :30-m ,"*******************"+(m<=10?20-2*m:2*m-20)
);
m++;
}
}
zkeagle
2006-04-22
打赏
举报
回复
是不是在这里
"******"是做为一个字符指针或者说一个地址进行处理的~
也就是说后面的+5,+7之类的数据表示的是地址偏移量?~
我这样理解对吗?~
loveliu0429
2006-04-22
打赏
举报
回复
我也不明白唉,没用过
有明白的给讲讲呗
JoyerHuang_悦
2006-04-22
打赏
举报
回复
这与printf没有什么联系,关键在于阁下对C语言的理解,
或者更加准确的说,在下阁下对字符串常量,字符指针,指针运算的理解,
这个最好找本书来看。比如《C程序设计语言》《C与指针》《C专家编程》
另外,请把程序中的"*********"改成"SeeWhatHappen",再把"+5"改为"+1"、"-1"、
"+7"之类的东西、看看会是什么效果。。
只见烟火飞扬
2006-04-22
打赏
举报
回复
看看,应该可以明白些什么
---------------------------------
for(int i=0;i<7;i++)
printf("%s\n","*******"+i);
嵌入式软件调试专题2:
printf
函数打印高阶技巧
分享使用
printf
打印的技巧:包括控制打印开关、打印等级控制、以及打印函数
printf
缓冲机制带来的打印延迟
问题
,让你在工作、学习、软件debug中提高工作效率!
用scanf、
printf
输入
输出string型字符串
有的时候在c++里要用scanf、
printf
输入
输出string型字符串,这是可以实现的,不过要做
一点
处理。 具体操作看代码: #include<cstdio> #include<string> using namespace std; int main() { int n; ...
c语言
输入
输出scanf和
printf
首先谈谈c语言和c++的
输入
输出的差别,C语言使用的scanf函数和
printf
函数,c++使用的是cin和cout。虽然cin和cout可以不指定
输入
输出格式,但是cin和cout消耗时间比scanf和
printf
多很多。因此在使用时,应该尽量使用...
关于
printf
缓冲区溢出的某些补充
,a):当遇到%n时,程序会检查已经
输入
了多少字符串,然后将其写入到a中。可以通过这
一点
来改写栈中内存。 %n写入的内存最大为4字节。 %hn写入的内存最大为2字节。 %hhn写入的内存最大为1字节(用于将大字节拆开写...
C语言字符数组的
输入
与输出:scanf,
printf
,getchar,putchar,gets使用方法
字符数组 字符数组就是char数组,当维度是一维时可以当做“字符串”。当维度是二维时可以当做字符串数组,即若干字符串。...1.scanf
输入
与
printf
输出 scanf对字符类型有%c和%s两种格式(
printf
同...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章