Не работает ввод и вывод строки программирование - C (СИ)

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

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

Нужно ввести в начале строку в файл, не важно как, но лучше с клавиатуры, и вывести ее из файла в консоль(не затрагивая следующие задания), не понимаю что не так, помогите пожалуйста. ВВОД СТРОКИ ПЕРЕД ЗАДАНИЯМИ исправлять здесь.
#include "stdafx.h"
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    char input_file[255], output_file[255];//адреса 2х файлов
    FILE *input, *output;//потоки для 2х файлов
 
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ЗАДАЧА№1
 
    const int x = 20;//массив
    int A[x];
    int sum = 0;
    int pos = 0;// переменная для указателя положения
    int * p = A;
    char outputString[255];
 
    srand(time(NULL));
 
    //ФАЙЛ ИСХОДНЫХ ДАННЫХ
    printf("Имя файла исходных данных: ");
 
    scanf("%s", input_file);//адрес файла для исх. данных
    input = fopen(input_file, "w");//открытие файла для записи
 
    while (input == NULL) { //на случай неправильного имени файла
        printf("Ошибка при открытии файла исходных данных!\nВведите имя файла исходных данных еще раз: ");
 
        scanf("%s", input_file);
        input = fopen(input_file, "w");
    }
 
    //ФАЙЛ РЕЗУЛЬТАТОВ
    printf("Имя файла результатов: ");
 
    scanf("%s", output_file);//адрес файла для результатов
    output = fopen(output_file, "w+");// открытие файла для записи и чтения
 
    while (input == NULL) {
        printf("Ошибка при открытии файла результатов!\nВведите имя файла результатов еще раз: ");
 
        scanf("%s", output_file);
        output = fopen(output_file, "w+");
    }
 
    /////////////////////////// ВВОД СТРОКИ ПЕРЕД ЗАДАНИЯМИ /////////////////////////////////////////

    input = freopen(input_file, "r+", input);
    fprintf(input, "Какая-то строка\n");
    fseek(output, pos, SEEK_SET);
    fgets(outputString, 255, output);
    printf("%s\n", outputString);
    fseek(output, 0, SEEK_END);

    ///////////////////////////////////////////////////////////////////
    //ЗАПОЛНЕНИЕ ФАЙЛА INPUT ИСХОДНЫМИ ДАННЫМИ А)
    fprintf(input, "а) Массив А(%d):\n",x);
    pos = ftell(input); //значение указателя положения потока на начало исх.данных (после строки, введенной выше)
    for (int i = 0; i < x; i++) {
        fprintf(input, "%d\n", rand()%10+(-5));//заполнение файла исх. данных числами
    }
 
    //ИЗВЛЕЧЕНИЕ ДАННЫХ А) ИЗ ФАЙЛА В МАССИВ ARR
    input = freopen(input_file, "r", input);//открытие файла для чтения
    fseek(input, pos, SEEK_SET);//перемещение указателя относительно начала файла на POS вперед
    for (int i = 0; i < x; i++) {
        fscanf(input, "%d", &A[i]);//заполнение массива из файла
        printf("%d\n", A[i]);
    }
 
//ВЫВОД РЕЗУЛЬТАТОВ В ФАЙЛ OUTPUT
    pos = ftell(output);
    //ОБРАБОТКА МАССИВА ARR
    for (int i = 0; i < x; i++)
    {
        if (*(p+i) >= 0)
        {
            fprintf(output, " %d  ",*(p+i));
        }
    }

        for (int i = 0; i < x; i++)
    {
        if (*(p+i) < 0)
        {
            fprintf(output, " %d  ",*(p+i));
        }
    }
 
    //ВЫВОД РЕЗУЛЬТАТОВ ИЗ ФАЙЛА В КОНСОЛЬ
    fseek(output, pos, SEEK_SET);
    fgets(outputString, 255, output);
    printf("%s\n", outputString);
    fseek(output, 0, SEEK_END);

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ЗАДАЧА№2
 
    const int N = 10;
    const int M = 10;
    int matrix[N][M];
    p = &matrix[0][0];
    char outputStringg[255];
 
    input = freopen(input_file, "a", input);//открытие файла для записи в конец
    fprintf(input, "б) Двумерный массив M(%d,%d):\n", N, M);
    pos = ftell(input);
    
    //ЗАПОЛНЕНИЕ ФАЙЛА INPUT ИСХОДНЫМИ ДАННЫМИ Б)
    for (int i = 0; i < N*M; i++)
    {
        fprintf(input, "%d", rand()%10+(-5));
        if (((i + 1) % M) == 0) fprintf(input, "\n"); else  fprintf(input, "\t");
    }
 
    //ИЗВЛЕЧЕНИЕ ДАННЫХ Б) ИЗ ФАЙЛА В МАССИВ MATRIX
    input = freopen(input_file, "r", input);//открытие файла для чтения
    fseek(input, pos, SEEK_SET);//перемещение указателя относительно начала файла на POS вперед
    for (int i = 0; i < N*M; i++) {
        fscanf(input, "%d", p);
        printf("%d\t", *p);
        if (((i + 1) % M) == 0) printf("\n");
        p++;
    }

    pos = ftell(output);
    //ОБРАБОТКА МАССИВА MATRIX
 
    const double K = 10;
    double srednee = 0;
    
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            sum += *((int *) matrix + (i * 10) + j);
        }
        srednee = sum / K;
        sum = 0;
        fprintf(output, " %f ", srednee);
    }
 
    //ВЫВОД РЕЗУЛЬТАТОВ В ФАЙЛ OUTPUT

    //ВЫВОД РЕЗУЛЬТАТОВ ИЗ ФАЙЛА В КОНСОЛЬ
    fseek(output, pos, SEEK_SET);
    fgets(outputStringg, 255, output);
    printf("%s", outputStringg);

    //ЗАКРЫТИЕ И РАЗЪЕДИНЕНИЕ ФАЙЛОВ, СВЯЗАННЫХ С ПОТОКОМ
    fclose(input);
    fclose(output);
    getch();
}

Решение задачи: «Не работает ввод и вывод строки программирование»

textual
Листинг программы
fscanf (input,"%s",outputString);

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

  1. Входные данные:
    • input (тип: FILE*) - файловый указатель, который указывает на файл, из которого считываются данные
    • outputString (тип: char*) - указатель на строку, в которую считываются данные
  2. Выполняемые действия:
    • С помощью функции fscanf считывается строка из файла, указанного в переменной input.
    • Считанная строка сохраняется в переменной outputString.
  3. Выходные данные:
    • outputString (тип: char*) - содержит считанную строку.

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


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

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

9   голосов , оценка 4.222 из 5
Похожие ответы