这个错误该怎么该??error C2664: 'strcpy' : cannot convert parameter 1 from 'char (*)[256]

renbin5566 2010-04-29 09:04:24
error C2664: 'strcpy' : cannot convert parameter 1 from 'char (*)[256]' to 'char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
# include <stdio.h>
# include <string.h>
# define MAXSTRLEN 255
typedef char sstring[MAXSTRLEN+1];
void Concat(sstring *T,sstring s1,sstring s2)//连接两个字符串
{

int i,j=0;
if(s1[0]+s2[0]<=MAXSTRLEN){//第一种情况。当两个字串之和小于新串市
strcpy(T,s1);
strcat(T,s2)
T[0]=s1[0]+s2[0];
}
else if(s1[0]<MAXSTRLEN && s1[0]+s2[0]>MAXSTRLEN)//第二种情况。当两个子串之和大于总串,可是第一个子串小于新串
{
strcpy(T,s1);
j=s1[0];
for(i=1;i<MAXSTRLEN-j;i++){
strcat(T,s2[i]);
j++;
}
T[0]=j;
}
else//当第一个子串小于等于新串时
{
for(i=0;i<=MAXSTRLEN;i++)
strcpy(T,s1);
T[0]=s1[0];
}
}
void Strprint(sstring T)//输出字符串
{
int i;
for(i=1;i<=T[0];i++)
printf("%c",T[i]);
}
void Destroystring(sstring *T)//释放字符串的空间
{
free(T);
}
void main()
{
sstring T;//定义三个串
sstring s1;
sstring s2;
printf("请输入字符串s1:");
for(i=1;s1[i]!='1';i++)
scanf("%c",&s1[i]);
s1[0]=i-1;
for(i=1;s2[i]!='1';i++)
scanf("%c",&s2[i]);
s2[0]=i-1;
Concat(&T,s1,s2);//连接
Strprint(T);//输出
Freestr(&T);
}

error C2664: 'strcpy' : cannot convert parameter 1 from 'char (*)[256]' to 'char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
...全文
828 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
panny90 2010-04-29
  • 打赏
  • 举报
回复
char *strcpy(char *s1,const char *s2);
cattycat 2010-04-29
  • 打赏
  • 举报
回复
typedef char sstring[MAXSTRLEN+1];
你的sstring已经是char*类型了,不需要用sstring*类型了。
cattycat 2010-04-29
  • 打赏
  • 举报
回复
typedef char sstring[MAXSTRLEN+1];
你的sstring已经是char*类型了,不需要用sstring*类型了。
huanmie_09 2010-04-29
  • 打赏
  • 举报
回复
typedef char sstring[MAXSTRLEN+1];
这里是定义了char型数组的一个同义词sstring, 该数组的大小为MAXSTRLEN+1;
实际上
sstring T;
等价于
char T[MAXSTRLEN+1];
同理:
sstring *T;
等价于char (*T)[MAXSTRLEN+1];
renbin5566 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fox000002 的回复:]
调用函数需要清楚参数类型

strcpy 需要的字符指针类型


C/C++ code
strcpy(*T,s1);
strcat(*T,s2)
*T[0]=s1[0]+s2[0];
[/Quote]



void Concat(sstring *T,sstring s1,sstring s2)//连接两个字符串
{

int i,j=0;
if(s1[0]+s2[0]<=MAXSTRLEN){//第一种情况。当两个字串之和小于新串市
strcpy(T,s1);
strcat(T,s2)
T[0]=s1[0]+s2[0];
}
这里的T不是已经是指针了么
int main(void)
{
char string[10];
char *str1 = "abcdefghi";

strcpy(string, str1);
printf("%s\n", string);
return 0;
}

strcpy(string, str1);这个不是也可以吗?那么
strcpy(T,s1);
为什么不可以啊。
不要嘲笑小弟浅薄无知。忘多多指教。。。
fox000002 2010-04-29
  • 打赏
  • 举报
回复
调用函数需要清楚参数类型

strcpy 需要的字符指针类型

strcpy(*T,s1);
strcat(*T,s2)
*T[0]=s1[0]+s2[0];

69,380

社区成员

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

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