旧帖,来人剖析了。。

Darefordream 2011-05-25 05:29:54
char* first_name="liu";
char* phone_number="1212121";
char qry[50];
int i=30,j=40;
sprintf(qry,"INSERT INTO Address_List VALUES(NULL,'%s','%d','%s','%f')",*first_name,40,*phone_number,j);
以上编译OK. 运行死机. 编译环境EVC4.2. 运行目标为ARM10.
但如果将
first_name. 和phone_number改为char first_name[10],phone_number[10];
sprintf(qry,"INSERT INTO Address_List VALUES(NULL,'%s','%d','%s','%f')",first_name,40,phone_number,j);
编译OK.运行也OK.
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyh12345 2011-05-25
  • 打赏
  • 举报
回复
sprintf( buf, "%s", *t )

%s表示要在此插入字符串,而*t是一个字符,当然要崩溃了
就想叫yoko 2011-05-25
  • 打赏
  • 举报
回复

char *p = "abc";
char buf[] = "def";
char dest[8] = {0};
sprintf(dest, "%s%s", p, buf);
Darefordream 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 c_losed 的回复:]
first_name 是地址
*first_name 是值
[/Quote]
我也是这么理解,可有评论“你用一个指针的时候,就不用使用*号了
sprintf(qry,"INSERT INTO Address_List VALUES(NULL,'%s','%d','%s','%f')",*first_name,40,*phone_number,j);

红色部分冲突了,去掉星号。"和“char *t = "\r\n" );

sprintf( buf, "%s", *t )

*t 指向 地址0d处,而0D处的内容是不可知的。”这两句没理解。。


c_losed 2011-05-25
  • 打赏
  • 举报
回复
first_name 是地址
*first_name 是值

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧