Я пытаюсь написать небольшую программу, чтобы отменить первые n символов текста в файле. Я написал ::Обращение n символов файла
void getdata(FILE *fp)
{
char ch;
printf("Enter text::\n");
while((ch=getchar())!=EOF)
fputc(ch,fp);
}
void printdata(FILE *fp)
{
char ch;
while((ch=fgetc(fp))!=EOF)
putchar(ch);
}
void reverse(FILE *fp, int n)
{
char ch[20];
for(int i=0;i<n;++i)
ch[i]=fgetc(fp);
rewind(fp);
printf("%.*s\n",n,ch); //printing the string
while(n--)
fputc(ch[n-1],fp);
}
int main()
{
FILE *fp;
int n;
fp=fopen("music.txt","w+");
getdata(fp);
rewind(fp);
printf("Number of chars to reverse:: ");
scanf("%d",&n);
reverse(fp,n);
rewind(fp);
printf("After reversing text is::\n");
printdata(fp);
fclose(fp);
return 0;
}
И выход
Где я буду неправильно? Почему существует «u»? EDIT: Я мог заставить его работать, заменив время цикла с
for(int i=0;i<n;++i)
fputc(ch[n-1-i],fp);
Но что вина в то время?
@ Javia1492 heh? скорее вам следует советоваться, так как 'EOF' может не вписываться в' char', измените тип 'ch' на' int'. –
@Lokesh Jaddu И, если вы не заметили, переполнение потенциального буфера в функции 'reverse()'. – Downvoter
@ Javia1492 1) В какой строке вы нашли 'eof()'? Пожалуйста, укажите это для меня. 2) Каков тип возврата 'getchar()'? и я не _implying_ ничего. Я вам говорю, это плохо. Надеюсь, вы не против. :-) –