C语言的问题,我编写LAB WINDOWS CVI遇到了问题求助!

inti;shortshoot[255];intii,FileHandle;chararr1[600];for(i=0;i<255;i++){shoot[i]=Chann... int i;
short shoot[255];
int ii,FileHandle;
char arr1[600];

for (i = 0; i < 255; i ++)
{
shoot[i]=ChannelShort1[i] ;
}
shoot[254]='\0';

FileHandle = OpenFile ("shuju.txt", VAL_READ_WRITE, VAL_APPEND, VAL_ASCII); // 创建一个新文件
strcpy((char*)arr1,(char*)shoot);
ii=StringLength(arr1);
WriteFile (FileHandle, arr1, ii);
CloseFile (FileHandle); // 关闭文件

这样写入TXT文本的数据就是乱码,以下这样就是正确的,有啥子办法改进不?
int i;
short shoot[255];
int ii,FileHandle;
char arr1[600];

FileHandle = OpenFile ("shuju.txt", VAL_READ_WRITE, VAL_APPEND, VAL_ASCII); // 创建一个新文件
strcpy((char*)arr1,“1234”);
ii=StringLength(arr1);
WriteFile (FileHandle, arr1, ii);
CloseFile (FileHandle); // 关闭文件
展开
 我来答
veket的小号
2013-12-31 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3982万
展开全部
你该把 shoot数组 每个元素 转成 字符串 后 strcat拼接到字符 数组arr.......
追问
怎么转化呢 ?
追答
shoot数组是 两个字节的short int 最大32767 你为什么 给他加\0? 要把它当字符串? 还是用零表示数据的 零前的哪个是最后一个数据?..

修改如下 shoot数组中式数据
int i;
short shoot[255] = {30105, 2495, 18042};//不知你懂ChannelShort1事啥,弄组数据测试
int ii, FileHandle;
char arr1[600] = "";//一个short数据转成字符串最多要五个字符 你这254个数据
//你这个数组是不是有点小...
FileHandle = OpenFile ("shuju.txt", VAL_READ_WRITE, VAL_APPEND, VAL_ASCII); // 创建一个新文
char buf[10];
i = 0;
while(shoot[i])
{
if(!i)
sprintf(buf, "%d\0", shoot[i]);//第一个前没有逗号
else
sprintf(buf, ",%d\0", shoot[i]); 后续数据前有个逗号和前一个数据隔开
strcat(arr1, buf);
i++;
}
ii=StringLength(arr1);
WriteFile (FileHandle, arr1, ii);
CloseFile (FileHandle); // 关闭文件
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式