一道华为公司的面试题目.怎么把字符串转化为字节数组?
一道华为公司的面试题目.怎么把字符串转化为字节数组?
比如 CString *str="ABCD";(长度不确定的字符串) (VC中)
或
char *str="ABCD";(长度不确定的字符串) (C语言中)
变为 byte DATA[4]; (要求字节数组长度应和字符串一致)
DATA[0]='A';
DATA[1]='B';
DATA[2]='C';
DATA[3]='D';
问题点数:10、回复次数:22Top
1 楼steedhorse(晨星)回复于 2005-11-30 13:34:35 得分 1
不太明白,是不是想让你这样:
使用CString::GetLength或者strlen得到字符串的长度;
根据长度动态申请一块足够的空间;
使用strcpy拷贝过去;
使用;
释放动态申请的空间。Top
2 楼nodefault(永不言败)回复于 2005-11-30 13:39:59 得分 0
字节数组的维数是动态的,不好定义! 怎么定义动态维数的?
字节实际上就是字符.Top
3 楼getter(getter)回复于 2005-11-30 13:40:37 得分 1
c:
char *str='ABCD',*p=str;
byte *b = (byte *) malloc(strlen(str)),*c=b;
while (*p) *c++=*p++;Top
4 楼steedhorse(晨星)回复于 2005-11-30 13:41:57 得分 1
哦,不对,不能用strcpy,说错了,没看情题意。Top
5 楼ssh000(如风似水)回复于 2005-11-30 13:43:29 得分 1
// ssh.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#define N 6
int main(int argc, char* argv[])
{
char *p="abcde";
char array[N];
for(int i=0;i<N;i++)
{
array[i]=*p;
p++;
}
cout<<p-6<<endl;
cout<<array<<endl;
return 0;
}
Top
6 楼HelloIvan2005()回复于 2005-11-30 13:44:44 得分 1
#include <iostream>
using namespace std;
char OneChar(const char* pChar = 0)
{
static const char* psChar;
if(NULL != pChar)
{
psChar = pChar;
return *psChar;
}
if('\0' != *psChar)
{
return *psChar++;
}
else
{
return 0;
}
}
const char* pChar = "ABCD" ;
void main()
{
int i = 0;
char Data[4];
char c;
OneChar(pChar);
while((c = OneChar()) != 0)
{
Data[i++] = c;
}
}Top
7 楼nodefault(永不言败)回复于 2005-11-30 13:46:15 得分 0
ssh000(如风似水) :
这么定义肯定不行.我要动态维数的字节数组.
#define N 6
Top
8 楼xdspower(杂食菜熊)回复于 2005-11-30 13:52:45 得分 1
如果没有语境,这题应该是考察字符串和字符数组的关系,实际上[]可以看作一个根据命名标识取地址上信息的运算符,既a[x]表示*(a+x)而已Top
9 楼HelloIvan2005()回复于 2005-11-30 13:59:03 得分 0
//动态字符维数
#include <iostream>
using namespace std;
char OneChar(const char* pChar = 0)
{
static const char* psChar;
if(NULL != pChar)
{
psChar = pChar;
return *psChar;
}
if('\0' != *psChar)
{
return *psChar++;
}
else
{
return 0;
}
}
const char* pChar = "ABCDE" ;
void main()
{
int i = 0;
char *pData = new char[strlen(pChar)];
char c;
OneChar(pChar);
while((c = OneChar()) != 0)
{
pData[i++] = c;
}
for(i = 0; i < strlen(pChar); i++)
cout << pData[i] << endl;
}Top
10 楼nodefault(永不言败)回复于 2005-11-30 14:03:03 得分 0
我是楼主!
getter(getter) 的程序最简洁,但结果不正确.
在VC里运行的结果是: 结果= x
char *str="wdfuG",*p=str;
byte *b = (byte *) malloc(strlen(str)), *c=b;
while (*p) *c++=*p++;
m_value.Format(" = %c",*b+1);Top
11 楼RainWindy(风雨交加)回复于 2005-11-30 14:14:56 得分 1
到目前为止还没有楼主的题目用意。Top
12 楼HelloIvan2005()回复于 2005-11-30 14:19:12 得分 0
#include <iostream>
using namespace std;
void main()
{
char* pChar = "ABCDE";
char* pData = new char[strlen(pChar) + 1];
int i = 0;
while(*pChar != '\0')
{
pData[i++] = *pChar;
cout << *pChar << endl;
pChar++;
}
}Top
13 楼creative55(hansonlu)回复于 2005-11-30 15:33:20 得分 1
char *str="wdfuG",*p=str;
byte *b = (byte *) malloc(strlen(str)), *c=b;
while (*p!='\0') *c++=*p++;Top
14 楼getter(getter)回复于 2005-11-30 23:19:07 得分 1
我是楼主!
getter(getter) 的程序最简洁,但结果不正确.
在VC里运行的结果是: 结果= x
char *str="wdfuG",*p=str;
byte *b = (byte *) malloc(strlen(str)), *c=b;
while (*p) *c++=*p++;
m_value.Format(" = %c",*b+1);
-----------------------------------------------------
樓主,*b='w',你加一,當然等於'x',但還是不明你的意思是甚麼...
=.= byte是甚麼?我在dev-c++不能運行Top
15 楼huwei001982(凶猛的小狗)回复于 2005-12-01 07:55:29 得分 1
char *p = "ABC";
unsigned char *sz = new unsigned char[strlen(p)];
memcpy(sz, p, strlen(p));
楼主你别说 unsigned char 不是 BYTETop
16 楼huwei001982(凶猛的小狗)回复于 2005-12-01 07:56:15 得分 0
其实这道题是没有意义的, 在C里, 字符串不就是字符的数组吗???Top
17 楼shootingstars(有容乃大,无欲则刚)回复于 2005-12-01 08:52:53 得分 0
呵呵,楼上的说得是。
在c中没有字符串这种类型,字符串就是字符数组,只不过以0结尾而已。
你直接byte *DATA = str不就可以了么?
结果肯定真确 8-)
DATA[0]='A';
DATA[1]='B';
DATA[2]='C';
DATA[3]='D';
对了,在c中有byte这种类型吗?Top
18 楼manplus(魅力加加)回复于 2005-12-01 11:58:00 得分 0
markTop
19 楼kidonline(扬帆)回复于 2005-12-01 14:51:15 得分 0
呵呵,c中没有byte这个类型Top
20 楼EnginePlus(额外动力)回复于 2005-12-01 16:05:04 得分 0
?不就是要字符数组么?
std::string m_str="ABCD";
const char *m_char = m_str.c_str();
// 差不多就OK了吧
你访问 std::cout<<*m_char; 输出 的就是A
m_char++;
std:cout<<*m_char; 输出就是B啦
你再做个循环 把 *m_char 赋给一个 字符数组[] 里去Top
21 楼note_code(天坠)回复于 2005-12-01 17:19:34 得分 0
学习Top
22 楼jordan1(班君)回复于 2005-12-01 19:27:01 得分 0
studyTop




