看来作者要加强概念的理解。
照你的意思,out[6]是一个字符串,那么它的每一个成员只能表示一个字符,即out[3]只能表示一个字符,怎么可能是out[3]=12?"12"是2个字符嘛。或者说"12"是个字符串,怎么能赋值给单个字符变量out[3]?
解决这个问题有2种方法:
1 直接用int整数表示即:int out[6];
这样out[3]=12就合情合理了。
2 如果你一定要用字符表示数字,可以使用2维字符数组定义即:char out[][6];这样out[3]就可以表示长度不超过6-1=5个数字形式的字符串了(c/c++规定字符串最后一个结尾字符为'\\0')。要表示字符串out[3]中的某个字符,可以用
for(i=0;i<5;i++) out[3][i];
注意:
pFile=fopen("数据.txt","w+t"); --->pFile=fopen("数据.txt","wt+");
同时对文件的读写如果不是对结构体类型的成块数据最好不要使用函数fwrite()和fread();因为有时候会产生乱码。你可以使用结构化输入输出函数fscanf()和fprintf();无论是按文本文件还是二进制文件读写都不会产生乱码。
如果你的是int out[6];写入文件格式如下:
for(i=0;i<6;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%d",out[i]);/*注意这里是%d,和上面定义的类型一致*/
如果你的是char out[][6];写入文件格式如下:
for(i=0;i<字符串的个数;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%s\
",out[i]);/*注意这里是%s,和上面定义的类型一致*/
如还有疑问再说明。
如果上面是printf("%d ", out[i]); 说明out[i]是整型数组
冒险岛乐乐
18:23:14
那么fprintf(pFile,"%s\
",out[i]); 必须改为fprintf(pFile,"%d\
",out[i]);
冒险岛乐乐
18:23:30
数据类型要一致嘛
冒险岛乐乐
18:25:27
回答中我说了哦:如果你的是int out[6];写入文件格式如下:
for(i=0;i<6;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%d",out[i]);
冒险岛乐乐
18:26:10
如果你的是char out[][6];写入文件格式如下:
for(i=0;i<字符串的个数;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%s\
",out[i]);
冒险岛乐乐
18:27:42
一个是%d一个是%s分别对应定义时的int out[6]和char out[][6],就这么回事。