我试图从以下代码获取硬盘序列号&还试图复制" HDDserial.txt"另一个名为" Bond.txt"的文本文件:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char ch;
FILE *fp1,*fp2;
system("wmic path win32_physicalmedia get SerialNumber > HDDserial.txt");
fp1 = fopen("HDDserial.txt","r");
fp2 = fopen("Bond.txt","w");
while((ch= fgetc(fp1)!= EOF))
{
fputc(ch,fp2);
}
fputs("\nSender\n",fp2);
fclose(fp1);
fclose(fp2);
return 0;
}
我得到&#34; HDDserial.txt&#34;的输出像这样:
的SerialNumber
32534230394a5a44303333333931202020202020
但我的&#34; Bond.txt&#34;给了我一些奇特的字符。像这个图像:
但我希望输出与&#34; HDDserial.txt&#34;相同的输出。 in&#34; Bond.txt&#34; ! 任何人都可以帮我解决我的代码吗?这样我就可以解决这个问题&amp;得到适当的复制?
答案 0 :(得分:2)
!=
比=
更紧密。
所以这个
ch = fgetc(fp1) != EOF
将fgetc(fp1) != EOF
的结果分配给ch
,1
,直到达到EOF
,这样0
。
要纠正此问题,请使用以下括号:
(ch = fgetc(fp1)) != EOF
同样fgetc()
返回int
而不是char
。因此,ch
为int
。
int main()
{
int ch;
...
while ((ch = fgetc(fp1)) != EOF)
{
fputc((char) ch, fp2);
}
...
或者引入一个中间变量:
int main()
{
int result;
...
while ((result = fgetc(fp1)) != EOF)
{
char ch = (char) result;
fputc(ch, fp2);
}
...