[求助]:一个C语言问题

Maxdell 2005-12-09 12:51:24
想把字符串前面都加上 "Ox" (format函数),但怎么将改变的值传回去?

#include <stdio.h>
#include <string.h>

char format(char *str)
{
char *ch="0x";
char buf[10];
str=strcat(buf,ch);
printf(str); // 这里输出都是 0xffff

}

int main(void)
{
char *p="ffff";
format(p);
printf(p); // 输出还是ffff没变

getch();
return 0;
}
...全文
340 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xylophone21 2005-12-11
  • 打赏
  • 举报
回复
个人感觉比较理想的办法是这样int format(char *str,char* out),在函数外部申请空间
greenteanet 2005-12-11
  • 打赏
  • 举报
回复
来晚啦。
Maxdell 2005-12-10
  • 打赏
  • 举报
回复
谢谢大家,我问题解决了.

那天又改进了程序,和 lzp229(只想飞)(卡卡) 的有些类似了,但仍然有些问题,值可以传回来,但是一到main函数printf 就运行出错,调试看,值已经传回主函数变成0xffff了.删除打印行,运行无误,和同事讨论了一会儿也不思其解. 周一再把代码贴给大家看看.

大家的回复解决了我很多问题,从中也学到一些实际经验.我不用c语言好多年.

csucdl 2005-12-09
  • 打赏
  • 举报
回复
问题多多, 首先返回了临时数组的地址, 不允许
会修改常量
lzp229 2005-12-09
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include "malloc.h"
char *str(char *p)
{
char *ch = "0x";
char *pt;
pt = (char *)malloc(10*sizeof(char));
strcpy(pt,ch);
strcat(pt,p);
return pt;
}
int main(void)
{
char p[10]="ffff";
char *q;
q = str(p);
printf("%s",q);
free(q);
getch();
return 0;
}
lzp229 2005-12-09
  • 打赏
  • 举报
回复
一定要用strcat的话,你最好在format里面动态分配一块,主函数中释放。
lzp229 2005-12-09
  • 打赏
  • 举报
回复
问题多多阿。
Tycool 2005-12-09
  • 打赏
  • 举报
回复
char format(char *str) //一进这个函数,str其实是外面传进来的指针的复制品了!!!
{
char *ch="0x";
char buf[10];
str=strcat(buf,ch);//str临时(实际是复制品)转向字串 "0x"
printf(str); // 这里输出都是 0xffff //这里输出目前应是"0x",退出此函数,str还是指向进来时的值


format(p); //p指向的内容还是"ffff"
printf(p); // 输出还是ffff没变//输出当然就是"ffff"了!
屋顶上的老猫 2005-12-09
  • 打赏
  • 举报
回复
char *ch="0x";
cahr *buf="";//buf变成指针,因为strcat()接受是指针型的参数
str=strcat(ch,buf)//写错了,目标在前
dxabdepl 2005-12-09
  • 打赏
  • 举报
回复
改变如下:

char format(char *str)
{
//char *ch="0x";这一点有误
char ch[3]="0x";
//char buf[10];这一行也应初始化一下
char buf[0]="";
str=strcat(buf,ch);
printf(str); // 这里输出都是 0xffff

}
这样就OK了
编绎通过 运行正确

69,373

社区成员

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

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