自己写了一个字符串连接函数,出现问题

junkli 2011-05-20 08:45:00
设置断点调试都进入不了断点,而且根本没有连接成功,不知道怎么回事

char * linkChar(char *EmailName)
{
char SelectTable[]="select * from ";
WORD SelectTableLen=sizeof(SelectTable);
int i=0;
while(*(EmailName+i)!='\0')
{
*(SelectTable+SelectTableLen+i)=*(EmailName+i);
i++;
}
*(SelectTable+SelectTableLen+i)='\0';
return SelectTable;
}
...全文
100 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yulinlang 2011-05-20
  • 打赏
  • 举报
回复
两个问题:
1。返回栈上的局部变量。
2。数组越界。
yulinlang 2011-05-20
  • 打赏
  • 举报
回复
两个问题:
1。返回栈上的局部变量。
2。数组越界。
千杯不醉-sen 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yangsen600 的回复:]
C/C++ code

char * linkChar(char *EmailName)
{
char SelectTable[]="select * from "; //空格必须加,不加下面加也行
sprintf(SelectTable,"%s%s",SelectTable,EmailName);
return SelectTable;
}
[/Quote]
这个可以搞定的。。。能简单就简单
junkli 2011-05-20
  • 打赏
  • 举报
回复
改成WORD SelectTableLen=strlen(SelectTable);可以调试了. 可是发现
*(SelectTable+SelectTableLen+i)=*(EmailName+i);这句会跳过执行的...
千杯不醉-sen 2011-05-20
  • 打赏
  • 举报
回复

char * linkChar(char *EmailName)
{
char SelectTable[]="select * from "; //空格必须加,不加下面加也行
sprintf(SelectTable,"%s%s",SelectTable,EmailName);
return SelectTable;
}
KID_coder 2011-05-20
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <windows.h>
char * linkChar(char *EmailName)
{
static char SelectTable[100]="select * from "; //
strcpy(SelectTable, "select * from "); //每次都把SelectTable赋值一遍
WORD SelectTableLen=strlen(SelectTable); //strlen
int i=0;
while(*(EmailName+i)!='\0')
{
*(SelectTable+SelectTableLen+i)=*(EmailName+i);
i++;
}
*(SelectTable+SelectTableLen+i)='\0';
return SelectTable;
}


int main( )
{
char str[100] = "hello";
printf("%s\n", linkChar(str));
return 0;
}

千杯不醉-sen 2011-05-20
  • 打赏
  • 举报
回复
有简单的干嘛不用、、、
千杯不醉-sen 2011-05-20
  • 打赏
  • 举报
回复
char SelectTable[100]="select * from ";
千杯不醉-sen 2011-05-20
  • 打赏
  • 举报
回复

char * linkChar(char *EmailName)
{
char SelectTable[]="select * from ";
WORD SelectTableLen=strlen(SelectTable);
int i=0;
while(*(EmailName+i)!='\0')
{
*(SelectTable+SelectTableLen+i)=*(EmailName+i);
i++;
}
*(SelectTable+SelectTableLen+i)='\0';
return SelectTable;
}
KID_coder 2011-05-20
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <windows.h>
char * linkChar(char *EmailName)
{
static char SelectTable[100]="select * from "; //要够大
WORD SelectTableLen=strlen(SelectTable); //strlen
int i=0;
while(*(EmailName+i)!='\0')
{
*(SelectTable+SelectTableLen+i)=*(EmailName+i);
i++;
}
*(SelectTable+SelectTableLen+i)='\0';
return SelectTable;//返回临时变量不是好的做法~
}


int main( )
{
char str[100] = "hello";
printf("%s\n", linkChar(str));
return 0;
}

static 化SelectTable的做法也不是很好~
使用malloc也会容易造成内存泄露
ljt3969636 2011-05-20
  • 打赏
  • 举报
回复
哪加的断点?
代码来说
WORD SelectTableLen=sizeof(SelectTable);有问题,这里SelectTableLen永远是4,因为SelectTable已经是指针类型了
WORD SelectTableLen=strlen(SelectTable);//返回字串长度按你需要来决定是不是SelectTableLen=SelectTableLen+1;
千杯不醉-sen 2011-05-20
  • 打赏
  • 举报
回复
连接数据库,写的这么复杂。。。

69,373

社区成员

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

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