cpp(23) : error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'

#include<stdio.h>#include<string.h>#defineN50voidmain(){inti,j,k,n;printf("请输入国家名总数:"... #include <stdio.h>
#include <string.h>
#define N 50
void main()
{
int i,j,k,n;
printf("请输入国家名总数:");
scanf("%d",&n);
char str[N][N];
char t[N];
for(i=0;i<n;i++)
{
gets(str[i]);
}
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(str[j],str[k])>0)
k=j;
}
strcpy(t[N],str[k]);/*这个地方错误,不理解,该怎么改?*/
strcpy(str[k],str[i]);
strcpy(str[i],t[N]);
}
for(i=0;i<n;i++)
puts(str[i]);
}
展开
 我来答
嘿晕
2012-12-16 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:130万
展开全部
t是char一维数组,st是char二维数组
st[n]可以代表一行char的指针
t[n] 只能代表一个char

上面的错误是
strcpy(t[N],str[k]); 第一个参数使用了char型应该用指针改为

strcpy(t,str[k]);
酸落啊4
2012-12-19 · TA获得超过138个赞
知道答主
回答量:212
采纳率:0%
帮助的人:66.9万
展开全部
strcpy(t[N],str[k]);/*这个地方错误,不理解,该怎么改?*/

可以改成:
strcpy(t,str[k]); 因为 t 代表的是字符数组的第一个位置。 t[N]指的是 字符数组的第N个单元,这里越界了。下面两句也有问题。
str[N][N],是不是定义错了?应该是str[N]吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式