急!整型数组赋值给字符数组的问题

具体程序很长,我不想写;但有一个问题想了好长时间,请不吝赐教。
char *p=szText; //定义一个指针,指向字符数组元素
for(int k=0;k<j;k++)
{
printf("%x",m2[k]);
itoa(m2[k],szText,10);
p++
}
//我这个程序中szText[]是一个字符数组,m2[]是一个整型数组,现在我想把m2[]中的十进制数(许多个)转化为字符型并依次存到szText[]中,于是用了itoa函数。但是调试发现结果不对。该怎么办?另外,指针是我后加的,为了依此递增字符数组,但似乎如果十进制数很大时就不行了,该怎么改?

你的思维比较混乱,其实很简单:

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int m2[5] = {12,50,18,20,15};
 char szText[20];
 printf("将这些整数转化成字符串:\n");   
 for(int k=0;k<5;k++)
 {         
  itoa(m2[k],szText,10);
  printf("%s\n",szText);
 }
 return 0;
}

运行结果如下:

追问

谢谢你的帮忙,我想问一下,我不需要打印,就只想把全部字符存放在szText数组中,该怎么做?

追答

这也很简单,用一个二维数组就OK了

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int m2[5] = {12,50,18,20,15};
 char szText[5][20];  //用一个二维数组就可以将转化后的字符串存储 
 for(int k=0;k<5;k++)
 {         
  itoa(m2[k],szText[k],10);
  
 }
 //你需要的存储的功能上面已经完成,下面输出是为了验证一下szText[5][20]有没有存放成功
 printf("将这些整数转化成字符串:\n");
 for(k=0;k<5;k++)
 {
  printf("%s\n",szText[k]);
 }
 return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-27
你把szTEXT[]定义成string类型的数组吧,#include<string>
string sxTEXT[100];这样整形的就算大数也没关系。
第2个回答  2014-06-27
szText要定义成二维的,才能放下很多个(比如10个)。
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "stdlib.h"
void main(void){
char szText[10][11];
int m2[10]={1000000000,20000,1234567890,12,22,33,44,55,77,88};
for(int k=0;k<10;k++){
printf("%x ",m2[k]);
itoa(m2[k],szText[k],10);
printf("%s\n",szText[k]);
}
}追问

谢谢你的帮忙,我想问一下,我不需要打印,就只想把全部字符存放在szText数组中,该怎么做?

追答

不是给你已经做完了吗?不打印就把打印语句printf("%s\n",szText[k]);删除就行了啊。好像都没有看答案就又追问了。完全是在与未入门者打交道……

第3个回答  2014-06-26
char类型只有1个字节啊,范围只是0-255或-128~127,int m2[]是4字节,你输入如果太大了会溢出。追问

那该怎么解决?

追答

不知道你这部分的设计思路?你可以写一个边界检测然后越界给个提示信息让输入者重新输入就好了。不过不能直接让对方输入char类型么?

追问

我做的是加解密系统,必须由整型再变为字符型,发送给客户端。

追答

那么用个二维字符数组,或者字符指针数组来保存。
另外itoa本身是返回一个char* 所以你之前用一个char保存也是不够的,你用数组或者char*保存就好了