没有获得所需的输出

时间: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
相关问题