копия файла с использованием c в Debian Linux

0

может кто-нибудь показать мне

неважно, с моим кодом.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
  FILE *fp1,*fp2;
  char ch,ch1;
  fp1=fopen("ma.dat","r");
  fp2=fopen("na.dat","w");
   while(!feof(fp1))
    {
      ch=fgetc(fp1);
      fprintf(fp2,"%c ",ch);
    }    
    fclose(fp1);
    fclose(fp2);

}

Я пытаюсь читать из файла и писать в другой файл. некоторые проблемы есть.

заранее спасибо

  • 1
    какая-то проблема существует какая проблема существует?
  • 0
    Что такое "some problem exist" ? и избегайте использования функции feof (), while( !feof( file ) ) is always wrong
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Измените цикл while -

while(1) // or TRUE or for(;;)
{
  ch=fgetc(fp1);
  // or if (fp1 == -1)
  if (feof(fp1)) { // you're printing eof to fp2... not a good idea.
    break;
  }
  fprintf(fp2, "%c", ch); // or fputc(ch, fp2); your string format included a space!
}

или более короткий (идиоматический) -

while ((ch = fgetc(fp1)) != EOF) 
  fputc(ch. fp2);

Или вы можете использовать конкретный Linux,

fseek(fp1, 0L, SEEK_END);
long sz = ftell(fp1);
fseek(fp, 0L, SEEK_SET);
sendfile(fp2, fp1, 0, sz);
  • 0
    while (true) 'true' вызывает следующую ошибку fcp.c: в функции 'main': fcp.c: 10: error: 'true' undeclared (первое использование в этой функции) fcp.c: 10: error: (каждый необъявленный идентификатор сообщается только один раз fcp.c: 10: error: для каждой функции, в которой он появляется.)
  • 0
    @ user1 извините. ИСТИНА или 1.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню