操作系统:ubuntu10.04
前言
很多时候,pc控制下位机,都是通过串口或web,多以ascii码直接通信。在数据较少时,可直接申请一个缓冲区,发送所需数据;但是在很多时候,发送的数据会非常大,直接申请一个非常大的缓冲区并不是一个好的方法。因此可以申请一个小的缓冲区,然后把各个ascii字符串的首地址复制到该缓冲区中,然后发送时,循环读取这个缓冲区的地址内容,发送ascii码字符串。
一,实现
-
#include <stdio.h>
-
#include <stdlib.h>
-
#include <string.h>
-
-
char *s1 = "hello world\n";
-
char *s2 = "wo shi zhong guo ren\n";
-
char *s3 = "i am a chinese\n";
-
void *data = NULL;
-
-
void init_data(void)
-
{
-
char **ptr = ((char**)data);
-
-
-
(*ptr) = s1;
-
printf("1 %p,%p,%s\n",ptr,s1,*ptr);
-
++ptr;
-
-
(*ptr) = s2;
-
printf("2 %p,%p,%s\n",ptr,s2,*ptr);
-
++ptr;
-
-
(*ptr) = s3;
-
printf("3 %p,%p,%s\n",ptr,s3,*ptr);
-
++ptr;
-
-
ptr = NULL;
-
-
printf("data1 %x\n",*(int*)data);
-
-
}
-
-
void show_data(void)
-
{
-
char **ptr = (char**)data;
-
-
while((*ptr) != NULL)
-
{
-
printf("%s\n",*ptr);
-
++ptr;
-
}
-
}
-
-
int main(void)
-
{
-
data = malloc(256);
-
memset(data,0,256);
-
printf("alloc success\n");
-
-
init_data();
-
-
printf("init success\n");
-
-
show_data();
-
-
free(data);
-
printf("free success\n");
-
-
return 0;
-
}
二,结果
阅读(402) | 评论(0) | 转发(0) |