超级简单问题,在线等待

ajsword 2003-10-15 11:05:22
char *funTrim(char *lpString) {
char *lpReturn;
strncpy(lpReturn,lpString,10);
}
上面是一个函数的简化,在进行strncpy的时候,会提示指针lpReturn没有初始化,这个问题怎么解决,用数组代替lpReturn出外
...全文
41 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhj10 2003-10-15
  • 打赏
  • 举报
回复
给指针new内存
char *lpReturn=new char[100];
efelix 2003-10-15
  • 打赏
  • 举报
回复
应该是取头部n个字符吧
lpString[n]='\0'就行了
daizh 2003-10-15
  • 打赏
  • 举报
回复
你设置这个函数的目的是,去掉字符串尾部n个字符,你可以用:
str(strlen(str)-n) = '\0'
efelix 2003-10-15
  • 打赏
  • 举报
回复
也可以把lpReturn作为参数传进来(用引用)
那就不用在函数里分配空间了,当然,外面还是要new或者malloc一块内存。
efelix 2003-10-15
  • 打赏
  • 举报
回复
定义10个字符变量a,b,c,d,.....,j;
a=lpString[0];
b=lpString[1];
......
j=lpString[9];
不错吧?没用数组,也没动态分配,嘿嘿
mjfsun 2003-10-15
  • 打赏
  • 举报
回复
up
efelix 2003-10-15
  • 打赏
  • 举报
回复
你到底想干什么
不分配空间,你叫strncpy把字符拷到哪里去?????
efelix 2003-10-15
  • 打赏
  • 举报
回复
为lpReturn分配空间
char *lpReturn=new char[10];

注意指针未初始化就使用是及其危险的!
因为你根本不知道它指向哪块内存
ajsword 2003-10-15
  • 打赏
  • 举报
回复
而且也不想用动态分配内存的方法
efelix 2003-10-15
  • 打赏
  • 举报
回复
原来你用的c不是c++啊
那用malloc
lpReturn=(char *)malloc(n*sizeof(char));//n是你要存放的字符个数
要包含<stdlib.h>


ajsword 2003-10-15
  • 打赏
  • 举报
回复
用了new怎么提示:
1.g:\practice\c\test\test.c(15) : error C2065: 'new' : undeclared identifier
2.g:\practice\c\test\test.c(15) : error C2143: syntax error : missing ';' before 'type'
3.g:\practice\c\test\test.c(15) : warning C4047: '=' : 'char *' differs in levels of indirection from 'int '

69,371

社区成员

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

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