Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > [C++]Работа с файлами


Автор: ALEXEY13 14.12.2007, 01:05
Эта программа копирует содержимое текстового файла, ограничив длину строки N символами. Слова, не помещающиеся в заданную строку не копировать.
А мне нужно слова, не помещающиеся в заданную строку скопировать в виде новой строки.
Подскажите, пожалуйста, как это сделать.

Код

#include <stdio.h>    
#include <string.h>    
#include <stdlib.h>    

#define MAXLEN 3

void main(void)
{    
    char c;
    char String[MAXLEN + 1];

    char *pathFileInput  = (char*)calloc(20, sizeof(char));
    char *pathFileOutput = (char*)calloc(20, sizeof(char));

    FILE *fileInput;
    FILE *fileOutput;

    printf("Input file path  -> ");
    scanf("%s", pathFileInput);

    printf("Output file path -> ");
    scanf("%s", pathFileOutput);

    fileInput  = fopen(pathFileInput,  "rt");
        fileOutput = fopen(pathFileOutput, "wt");
  
    while(c != EOF)
    {
        fgets(String, MAXLEN + 1, fileInput);
        fputs(String, fileOutput);
        fputc('\n', fileOutput);
        
        while (c != '\n' && c != EOF)
            c = fgetc(fileInput);
        
        if (c != EOF)
            c = ' ';
    }

    free(pathFileInput);
    free(pathFileOutput);
}


Автор: baldina 14.12.2007, 01:11
Код

#include <stdio.h>    
#include <string.h>    
#include <stdlib.h>    

#define MAXLEN 3

void main(void)
{    
    char c;
    char String[MAXLEN + 1];

    char *pathFileInput  = (char*)calloc(20, sizeof(char));
    char *pathFileOutput = (char*)calloc(20, sizeof(char));

    FILE *fileInput;
    FILE *fileOutput;

    printf("Input file path  -> ");
    scanf("%s", pathFileInput);

    printf("Output file path -> ");
    scanf("%s", pathFileOutput);

    fileInput  = fopen(pathFileInput,  "rt");
        fileOutput = fopen(pathFileOutput, "wt");
  
    while(c != EOF)
    {
        fgets(String, MAXLEN + 1, fileInput);
        fputs(String, fileOutput);
        fputc('\n', fileOutput);
        
        do {
            fputc (c = fgetc(fileInput), fileOutput);
         } while (c != '\n' && c != EOF);

        
        if (c != EOF)
            c = ' ';
    }

    free(pathFileInput);
    free(pathFileOutput);
}


Добавлено через 2 минуты и 32 секунды
Впрочем еще проще будет выкинуть внутренний цикл  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)