Файлы, работа с ними (ч.3) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пипл, помогите пожалуйста с задачами ( задачи 3,4 и 5 похожи ) ОЧЕНЬ прошу!!! HELP!!! ( ну не понимая я эти файлы =(( ) Задача 1. Даны два файла вещественных чисел с именами S1 и S2, элементы которых упорядочены по возрастанию. Объединить эти файлы в новый файл с именем S3 так, чтобы его элементы также оказались упорядоченными по возрастанию. Задача 2. Даны три файла вещественных чисел с именами S1, S2 и S3, элементы которых упорядочены по убыванию. Объединить эти файлы в новый файл с именем S4 так, чтобы его элементы также оказались упорядоченными по убыванию. Задача 3. Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные после первого символа пробела, включая и этот пробел. Задача 4. Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные после последнего символа пробела, включая и этот пробел. Задача 5. Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные перед первым символом пробела, включая и этот пробел.
Люди помогите плз =((((
по первому типа такого только надо добавить чтоб элементы упорядочивались по возрастанию.
#include <stdio.h>
#include <stdlib.h>
 
#ifndef MAX_PATH
#define MAX_PATH 1024
#endif
 
#define NFILES 3
 
int main(void){
        FILE * f[NFILES];
        char n[NFILES][MAX_PATH];
        int i, ch;
        
        printf("Name for output file: ");
        if ( scanf("%s%*c", n[0]) != 1 ){
                perror("scanf");
                exit(EXIT_FAILURE);
        }
        for ( i = 1; i < NFILES; ++i ){
                printf("Name for input file #%d: ", i);
                if ( scanf("%s%*c", n[i]) != 1 ){
                        perror("scanf");
                        exit(EXIT_FAILURE);
                }
        }
        
        if ( ! ( f[0] = fopen(n[0], "w") ) ){
                perror("fopen");
                exit(EXIT_FAILURE);
        }
        for ( i = 1; i < NFILES; ++i ){
                if ( ! ( f[i] = fopen(n[i], "r") ) ){
                        perror("fopen");
                        if ( fclose(f[0]) )
                                perror("fclose");
                        exit(EXIT_FAILURE);
                }
                while ( ( ch = fgetc(f[i]) ) != EOF ){
                        if ( fputc(ch, f[0]) == EOF ){
                                perror("fputc");
                                if ( fclose(f[0]) )
                                        perror("fclose");
                                if ( fclose(f[i]) )
                                        perror("fclose");
                                exit(EXIT_FAILURE);
                        }
                }
                if ( fclose(f[i]) )
                        perror("fclose");
        }
        if ( fclose(f[0]) ){
                perror("fclose");
                exit(EXIT_FAILURE);
        }
        printf("Done.\n");
        exit(EXIT_SUCCESS);
}
а как это сделать ??? Во втором тоже типо такого, только по убыванию, как это сделать ???

Решение задачи: «Файлы, работа с ними (ч.3)»

textual
Листинг программы
 if ( ( buf = (char*)malloc(len + 1) ) == NULL )

Объяснение кода листинга программы

  1. В коде определен условный оператор if.
  2. В условии этого оператора происходит выделение памяти для строки с помощью функции malloc.
  3. Результат этого выделения памяти проверяется на равенство NULL.
  4. Если выделение памяти не удалось, то программа выполняет действия, которые должны произойти при ошибке выделения памяти.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5