Не получить желаемый результат - PullRequest
0 голосов
/ 19 апреля 2011
#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 Ответ

2 голосов
/ 19 апреля 2011

Вот пример программы, которая загружает файл в память и затем печатает содержимое памяти обратно в стандартный вывод.

#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
...