c++题目:代码显示strcpy那里错cannot convert parameter 1 from 'char' to 'char *'
#include<iostream>#include<algorithm>#include<stdio.h>usingnamespacestd;intmain(){int...
#include<iostream> #include<algorithm> #include<stdio.h> using namespace std; int main() { int n,k,s,i,j,t,id,l,flat=1; char a[100],b[1000]; while(cin>>n) { if(flat) flat=0; else cout<<endl; getchar(); for(i=1;i<=n;i++) { gets(a); l=strlen(a); k=0; for(j=l-1;j>=0;j--) { if(a[j]==' ') { t=j; j++; break; } } a[t]='\0'; sscanf(a+j,"%d",&id); strcpy(b[id],a); } cin>>k; for(j=0;j<k;j++) { cin>>s; if(s>n) puts("void"); else puts(b[s]); } } return 0; }为什么一定要数组b变成b[1000][64]就不会有错,可实在搞不懂为啥用到二维数组
展开
1个回答
展开全部
cannot convert parameter 1 from 'char' to 'char *'
提示得很清楚啊,strcpy的参数是char*类型,你传递的参数是char类型,当然不正确。
char类型是使用=来赋值的。
strcpy(b[id],a); b[id] = (char)a;
提示得很清楚啊,strcpy的参数是char*类型,你传递的参数是char类型,当然不正确。
char类型是使用=来赋值的。
strcpy(b[id],a); b[id] = (char)a;
追问
那我该如何修改才能完成这道题,我看到有个学长就用二维数组b[1000][64]就能成功,不是很懂什么意思
追答
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int main() {
int n,k,s,i,j,t,id,l,flat=1;
char a[100],b[1000][100]; //b改成2维,长度与a[100]相同。
while(cin>>n) {
if(flat)
flat=0;
else
cout<<endl;
getchar();
for(i=1;i<=n;i++) {
gets(a);
l=strlen(a);
k=0;
for(j=l-1;j>=0;j--) {
if(a[j]==' ') {
t=j;
j++;
break;
}
}
a[t]='\0';
sscanf(a+j,"%d",&id);
strcpy(b[id],a);
}
cin>>k;
for(j=0;j<k;j++) {
cin>>s;
if(s>n)
puts("void");
else
puts(b[s]);
}
}
return 0;
}
这不是你自己写的程序?你定义char b[]来存储 char * 类型的数据,当然不行。
char *b[] 或者char b[][]才可以
eg. char b[][] =
{
"I'm the first string"
"I'm the second string",...
}
这样定义,b[id]才可以存储字符串。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询