的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;
}
,輸出是
我在哪裏去了?爲什麼會有'你'? 編輯:我能得到它與
for(int i=0;i<n;++i)
fputc(ch[n-1-i],fp);
,但用while循環的工作是什麼的,而錯嗎?
@ Javia1492呵?相反,你應該建議,因爲'EOF'可能不適合'char',請將'ch'類型改爲'int'。 –
@Lokesh Jaddu而且,如果您沒有注意到,函數'reverse()'中的潛在緩衝區溢出。 – Downvoter
@ Javia1492 1)哪一行你找到'eof()'?請爲我指出這一點。 2)'getchar()'的返回類型是什麼?而我並沒有想象任何事情。我很謙虛地告訴你,這很糟糕。希望你不介意。 :-) –