小弟不才,又来劳烦大家了

abcdef0966 2009-09-14 03:54:37
本代码实现在3位整数中寻找符合条件的整数并依次从小到大存入数组中,特定条件为它既是完全平方数,又有两位数字相同,例如144、676等。并将结果输入到文件中。

输入文件时出错了,得到的是乱码

#include <stdio.h>
#include <math.h>

#define MAX 900
int Square[MAX];


int writeDat(int Square[],int num)
{
printf("mark");
FILE *fp;
if ( ! (fp = fopen("out169.txt","wb")))
{
printf("error!\n");
return -1;
}
fwrite(Square, sizeof(int), num, fp);

printf("mark");
return 0;

}


int main()
{
int n;

int num[3];
int k = 0;
for (n = 10; n <= (int)sqrt(999); n++)
{
int m ,tmp;
tmp =m = n * n;

int i = 0;
while (tmp)
{
num[i++] = tmp % 10;
tmp /= 10;

}

if (num[0] == num[1] || num [0] == num[2] || num[1] == num[2])
{
Square[k++] = m;
printf("%d\n",m);
}
}

//写入文件writeDat()
writeDat(Square, k);

return 0;
}
...全文
171 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pmerOFc 2009-09-14
  • 打赏
  • 举报
回复
代码哪能这么写
不过你要是在应付考试的话
就当我没说
MTH3678~ 2009-09-14
  • 打赏
  • 举报
回复
学习
niimp2 2009-09-14
  • 打赏
  • 举报
回复
学习...
mstlq 2009-09-14
  • 打赏
  • 举报
回复
二进制写入,没错的……
fread出来,应该还是原来的数据……
ZH_Fly4evEr 2009-09-14
  • 打赏
  • 举报
回复
测试一下,再把数据从文件读出,看是否能打印出正确的数值!
hoomey 2009-09-14
  • 打赏
  • 举报
回复
上没说错了,刚测了下,代码好像没问题
乱码是因为那些数字代表的字符显示就是那样
如果转换成字符串写进去就可以看到正确的结果
abcdef0966 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 w0911h 的回复:]
乱码就对了,你二进制方式写文件,用文本工具打开文件看当然是乱码了。。。
[/Quote]

就是说,代码本身没问题是吗?
hoomey 2009-09-14
  • 打赏
  • 举报
回复
fwrite(Square, sizeof(int), num, fp);
这个用的有问题
你把地址写进去了,肯定是乱码
wanjingwei 2009-09-14
  • 打赏
  • 举报
回复
用fprintf吧
selooloo 2009-09-14
  • 打赏
  • 举报
回复
友情提示,用完文件要fclose
whg01 2009-09-14
  • 打赏
  • 举报
回复
文件是以"wb"方式打开,即二进制模式。
fwrite(Square, sizeof(int), num, fp);你这么做是直接把Square数组的值写入文件。
Square是整数数组,所以你需要把每个元素转成字符串,再输出。
w0911h 2009-09-14
  • 打赏
  • 举报
回复
乱码就对了,你二进制方式写文件,用文本工具打开文件看当然是乱码了。。。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧