我想反转输入文件的内容并显示反转的内容,但是我没有得到它;我认为我犯了一个逻辑错误。
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
int main() {
char* c = malloc(10);
char* c1 = malloc(10);
char ch, arg1[100], arg2[100];
int i, count = 0;
FILE *fp, *fq;
printf("Name of the file:");
scanf("%s", arg1);
fp = fopen(arg1, "w+");
if (!fp) {
perror("Failed to open file");
return errno;
}
printf("\t\t\t%s\n\n", arg1);
printf("\t\tInput the text into the file\n");
printf("\t\tPress Ctrl+d to the stop\n");
while ((*c=getchar()) != EOF) {
fwrite(c, 1, sizeof(c), fp);
count++;
}
printf("\n\n");
fclose(fp);
fp = fopen(arg1, "w+");
printf("Name of the output file:");
scanf("%s", arg2);
printf("Reversing the contents of the file.......\n");
fq = fopen(arg2, "w+");
printf("\t\t%s\n\n", arg2);
for (i = 1; i <= count; i++) {
fseek(fp, -(i + 1), SEEK_END)
fwrite(c1, 1, sizeof(c1), fq);
}
printf("Done....Opening the file\n");
rewind(fq);
for (i = 0; i <= count; i++) {
ch = getc(fp);
putc(ch, stdout);
}
fclose(fp);
fclose(fq);
return 0;
}
这里是一个示例程序,它将文件加载到内存中,然后将内存的内容向后打印到stdout。
#include <stdio.h>
#include <stdlib.h>
/* get the size of the file. No error checking here! */
long get_filesize(FILE *fp)
{
long fsize;
fseek(fp, 0, SEEK_END);
fsize = ftell(fp);
rewind(fp);
return fsize;
}
int main(int argc, char *argv[])
{
if(argv[1] == NULL) return EXIT_FAILURE;
FILE *input;
unsigned char *data;
long filesize;
int i;
/* open target file */
input = fopen(argv[1], "rb");
if(input == NULL) exit(EXIT_FAILURE);
/* retrieve size of the file */
filesize = get_filesize(input);
if(filesize < 1) exit(EXIT_FAILURE);
/* allocate space for the file */
data = malloc(filesize * sizeof(unsigned char));
if(data == NULL) exit(EXIT_FAILURE);
/* read the file into buffer and close the file handle */
fread(data, filesize, sizeof(unsigned char), input);
fclose(input);
/* print the file content from end to beginning */
for(i = --filesize; i >= 0; --i)
putchar(data[i]);
/* free the data buffer memory */
free(data);
return EXIT_SUCCESS;
}
输入文字:
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type
specimen book.
输出文本:
.koob nemiceps epyt a ekam ot ti delbmarcs dna epyt fo yellag a koot retnirp
nwonknu na nehw ,s0051 eht ecnis reve txet ymmud dradnats s'yrtsudni eht neeb
sah muspI meroL .yrtsudni gnittesepyt dna gnitnirp eht fo txet ymmud ylpmis si
muspI meroL