[求助]:一个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;
}
...全文
376 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了
编绎通过 运行正确
内容概要:SSD2828QN4是一款MIPI主桥接芯片,用于连接应用处理器与传统并行LCD接口及支持MIPI从属接口的LCD驱动器。该芯片支持最高每通道1Gbps的串行链路速度,最多可配置4个数据通道,显著减少了信号数量。它支持多种接口模式,包括RGB+SPI组合接口,适用于驱动智能或非智能显示面板,并能通过命令模式和视频模式传输数据。芯片内置时钟和复位模块、外部接口、协议控制单元(PCU)、包处理单元(PPU)、错误校正码/循环冗余校验(ECC/CRC)模块、长包和命令缓冲区、D-PHY控制器、模拟收发器以及内部锁相环(PLL),确保了高效的数据传输和系统稳定性。此外,文档详细描述了芯片的引脚分配、寄存器设置、操作模式、电源序列、时序特性等关键参数,为开发者提供了全面的技术指导。 适合人群:具备一定硬件设计基础,从事嵌入式系统开发、显示技术研究的研发人员。 使用场景及目标:①实现应用处理器与MIPI兼容显示屏之间的高速数据传输;②优化显示系统的功耗表现,减少电磁干扰(EMI);③通过灵活配置不同接口模式来适应各种显示设备的需求。 阅读建议:此文档面向具有一定电子工程背景的专业人士,建议读者结合实际项目需求深入理解各章节内容,特别是关于寄存器配置、时序要求等方面的具体说明。对于初次接触此类技术的开发者而言,建议先熟悉基本概念再逐步掌握高级功能的应用方法。

70,038

社区成员

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

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