没有获得所需的输出

时间:2011-04-19 16:07:53

标签: c ansi

#include<stdlib.h>
#include<errno.h>
#include<stdio.h>
int main()

{

    char *c=NULL,*c1,ch;
    c=(char*)malloc(10*sizeof(char));
    c1=(char*)malloc(10*sizeof(char));
    char 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==NULL)

    {

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

我想要反转输入文件的内容,并希望显示反转的内容,但我没有得到它;我想我犯了一个逻辑错误。

1 个答案:

答案 0 :(得分:2)

这是一个示例程序,它将文件加载到内存中,然后将内存的内容向后打印到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