如何在windows中复制system()命令获取文本文件的内容?

时间:2017-07-02 09:39:44

标签: c windows file copy system

我试图从以下代码获取硬盘序列号&还试图复制" 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;给了我一些奇特的字符。像这个图像: Image for "Bond.txt"

但我希望输出与&#34; HDDserial.txt&#34;相同的输出。 in&#34; Bond.txt&#34; ! 任何人都可以帮我解决我的代码吗?这样我就可以解决这个问题&amp;得到适当的复制?

1 个答案:

答案 0 :(得分:2)

!==更紧密。

所以这个

ch = fgetc(fp1) != EOF

fgetc(fp1) != EOF的结果分配给ch1,直到达到EOF,这样0

要纠正此问题,请使用以下括号:

(ch = fgetc(fp1)) != EOF

同样fgetc()返回int而不是char。因此,chint

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);
  }

  ...