C语言中,如何把数组中的内容,给字符串型指针!如把a[]中的内容给到*FMT中。

补充说明:本人在做液晶12864,有个调用程序,可以将所显示的内容直接给过去,可是我想做个变量,然后把变量中的给过去。不知道有什么高招!
例:FMT=“1”;
....处理
这样就能显示1,或者给其它值也可以显示其它的!
但是比如:int a; FMT=&a;就不行!
楼下有几个人的方法我都试过了,可以的。可是我需要的不是这样的。比如说:数组的值我有选择性的给到指针中,这样就不行了,比如说让FMT=a[1]或都FMT=a[2]这样的方式,这样我可以让显示处于一个可调状态。

这个试试吧

#include "stdio.h"
main()
{
int a[4]={1,2,3,4};//假定的数组
int i,*FMT;
scanf("%d",&i);//输入选择数组中的数据
FMT=&a[i];//赋给指针
printf("%d\n",*FMT);//打印
}

方法一:

char a[5];
char *FMT=(char*)malloc(sizeof(char)*5);
int i,k;
for(k=0,i=0;i<5;i++)
FMT[k++]=a[i];

方法二:

char a[5];
char *FMT=a;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-30
注意:是直接将内存中的数据转换成char型的,要判断是不是你需要的数据。

int a[200];

...... // 给a赋值

char * FMT;

FMT = (char*)a;

...... // 处理

例子:
#include <iostream>
#include <fstream>
using namespace std;

ofstream fout("a.txt");
int main()
{
int m[10];
int i;
for(i=0; i<10; i++)
{
m[i] = i;
}
char *p;
p = (char *)m;
for(i=0; i<10*sizeof(int); i++)
{
fout << (unsigned int)p[i]; // 将char转换成ascii码输出
}
return 0;
}

将int型 0-9 转换成char型ascii码输出

结果:0000100020003000400050006000700080009000
第2个回答  2010-10-30
12864你肯定会用到储存一些字模的模值,要实现显示字符、汉字或者图形的话必须先要将这些模值存放在一个实现定义好的常量区,51里面常用code关键字来申明。

由于12864是8位数据位宽,一页的高度就是8个dot。就比如你要显示16*16汉字的话就需要32个8位数据。

如果你先存放一个N个汉字数据到一个数组中,定义为
BYTE code DispCode[N][32] = {0x00,0x01,0x02,……};//here are dummy data

你若要显示几个汉字可以用个指针指向二维数据的首地址
pseudo code here:

BYTE *pDisp;
BYTE i;
for (i = 0; i < N; i++)
{
pDisp = DispCode[i];//get the row(index i) address
for (j = 0; j < 32; i++)
{
ActualPortName = pDisp[j];//transmit data to screen controller
}
}

当然还可以用行指针来做:
定义一个指针变量BYTE (*pDisp)[32];
pDisp = DispCode;
for (i = 0; i < N; i++)
{
for (j = 0; j < 32; j++)
{
ActualPortName = *(*(pDisp + i) + j);//transmit data to screen controller
}
}