比如:
unsigned char hz[2][18]={
{"我明白你是什么意思"},
{"你的意思到底是什么"}
};
unsigned char result1[];
我想把第二行的字符串拷到一个数组里,要用strcpy函数,怎么做?
strcpy(result,hz[1]);
strcpy(result,(unsigned char *)hz[1]);
怎么上面这两种方式都不行呢?
这样可以吧~~
#include <iostream>
#include <cstring>
#include <windows.h>
using namespace std;
char hz[2][100]={
{"我明白你是什么意思"},
{"你的意思到底是什么"}
};
int main()
{
char ch[100];
strcpy(ch,hz[1]);
cout<<ch<<endl;
system("pause");
return 0;
}
你没有对result1[]分配他的长度啊,
而且分配的长度还的足够放得下那两个数组的长度.
要是使用unsigned char result1[];
那与函数strcpy参数类型不同~
可以类型强制转换~~
#include <iostream>
#include <cstring>
#include <windows.h>
using namespace std;
unsigned char hz[2][100]={
{"我明白你是什么意思"},
{"你的意思到底是什么"}
};
int main()
{
char ch[100];
strcpy(ch,(char *)hz[1]);
cout<<ch<<endl;
system("pause");
return 0;
}
18改为19
是啊~
一个方面是这样~
编译会有错误提示~~
数组大小未知~~
另一方面,
unsigned char hz[2][18]={//18太小了~~
一.
unsigned char hz[2][18]={
"我明白你是什么意思"已经是18字节,还要\0那
二.
strcpy函数的原型是
char *strcat(char *s1, const char *s2);
第一个参数要是char*的,你用的是unsigned char
#include <iostream.h>
int main()
{
unsigned char hz[2][20]={
{"我明白你是什么意思"},
{"你的意思到底是什么"}
};
char result1[100];
strcpy(result1,(const char *)hz[1]);
cout << result1 << endl;
return 0;
}
如果非要用unsigned char
try this:
#include <iostream.h>
int main()
{
unsigned char hz[2][20]={
{"我明白你是什么意思"},
{"你的意思到底是什么"}
};
unsigned char result1[100] = {"初始化而已"};
const char* ccpp = (const char*)hz[1];
char* cp = (char*)result1;
strcpy(cp,ccpp);
//cout << cp << endl;
cout << (char*) result1 << endl;
return 0;
}