关于 char 赋值的问题

cpp_1 2019-07-30 03:32:36
int a1;
int a2;
double a3;
char sql_stat[]="";

while(read_data())
{
strcpy(sql_stat, " set promotion_no= "+a1+"aaaa="+a2+"bbbb="+a3 );

printf("sql_stat= %s|",sql_stat);

printf(" \n");

}

a1,a2,a3在read_data() 里面会有变动赋值

现在的问题是
1. " set promotion_no= "+a1+"aaaa="+a2+"bbbb="+a3 这个一直在报语法错误
2. 我想把 这个字段串放到sql_stat 里面,同时循环输出。


这一段应该怎么写,以前写C#直接联起来就可以了,但这个C应该怎么写才可以正确跑起来?

...全文
210 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
只会C++啊 2019-07-31
  • 打赏
  • 举报
回复
char sql_stat[]=""; 这个是干嘛 ,字符数组长度为1?? 要么直接给个比较大的数组,要么动态定义。
weixin_40290083 2019-07-30
  • 打赏
  • 举报
回复
1、在C语言中数组的定义必须指定长度,或者使用malloc来动态申请内存空间。所以char sql_stat[]="";是错误的,你应当预估这个字符串的最大长度。并且指定该数组的长度。
自信男孩 2019-07-30
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
int a1;
int a2;
double a3;
//char sql_stat[]="";
char sql_stat[128];

while(read_data())
{
//strcpy(sql_stat, " set promotion_no= "+a1+"aaaa="+a2+"bbbb="+a3 );
snprintf(sql_stat, 128, "set promotion_no=%d aaaa= %d bbbb=%lf", a1, a2, a3);

printf("sql_stat= %s|", sql_stat);

printf(" \n");

}

return 0;
}


供参考~

定义sql_stat长度太小(定义了1个字符的数组长度),建议定义一个足够大的长度,否则就会导致数组越界,结果未知。
建议使用sprintf或snprintf
636f6c696e 2019-07-30
  • 打赏
  • 举报
回复
int main() {
    int a1 = 1;
    int a2 = 2;
    double a3 = 3.14;
    char sql_stat[30] = "";
    sprintf(sql_stat, " set promotion_no=%d aaaa=%d bbbb=%lf", a1, a2, a3);
    printf("%s\n", sql_stat);
}
显示结果: set promotion_no=1 aaaa=2 bbbb=3.140000
gouyanfen 2019-07-30
  • 打赏
  • 举报
回复
引用 2 楼 cpp_1 的回复:
我加了 sprintf_s(sql_stat, " set promotion_no=%d aaaa=%d bbbb=%lf", a1, a2, a3) 这行,编译就报错 Undefined first referenced symbol in file sprintf_s recpt_data.o ld: fatal: symbol referencing errors. No output written to recpt_data collect2: ld returned 1 exit status *** Error code 1 make: Fatal error: Command failed for target `all'
char sql_stat[]="";定义错误,这样定义的字符串长度是2,且不会增长 看你的需求,你应该用string类
cpp_1 2019-07-30
  • 打赏
  • 举报
回复
我加了 sprintf_s(sql_stat, " set promotion_no=%d aaaa=%d bbbb=%lf", a1, a2, a3) 这行,编译就报错 Undefined first referenced symbol in file sprintf_s recpt_data.o ld: fatal: symbol referencing errors. No output written to recpt_data collect2: ld returned 1 exit status *** Error code 1 make: Fatal error: Command failed for target `all'
轻箬笠 2019-07-30
  • 打赏
  • 举报
回复
C/C++不能这么写。你得用sprintf_s;


char sql_stat[256]={0};
sprintf_s(sql_stat, " set promotion_no=%d aaaa=%d bbbb=%lf", a1, a2, a3)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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