@funny4badger

Удаляется первый символ строки. Как пофикить?

#define _CRT_SECURE_NO_WARNINGS

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


int main() {
    int NumOfLines;
    printf("Enter the count of lines: ");
    scanf("%i", &NumOfLines);


    FILE* fp;
    system("chcp 1251");
    system("cls");

    fp = fopen("file.txt", "w+"); // Открытие пустого файла для записи

    
    if ((fp = fopen("file.txt", "w+")) == NULL) //Error report
    {
        printf("Cannot open the file :(");
        getchar();
        return 0;
    }

    char* message[255];

    for (int i = 0; i < NumOfLines; i++) //Запись построчно
    {        
        printf("Enter your %i phrase: ", i+1);
        getchar();
        gets(message);                                             // Ошибка тут.
        fputs(message, fp);
        printf("message is %s", message);
        fputs("\n", fp);
    }

    fclose(fp); //Закрыл файл

    fp = fopen("file.txt", "r+");  // Открыл (опять) для чтения и записи
    char* line[255];
    int NumOfWord;

    for (int i = 0; i < NumOfLines; i++)
    {

        if (fgets(line, 250, fp) != NULL);
            NumOfWord = 1;
            for (int j = 0; j < strlen(line); j++)
            {
                if (*line[j] == ' ')
                    NumOfWord++;
                else if (line[j] == "\n")
                {
                    char* NumOfWords[20];
                    *NumOfWords = NumOfWord;
                    printf("Nums ar %c", NumOfWords);
                    fputs(NumOfWords, fp);

                }

            }
    }
    system("pause");
    fclose(fp);    

    getchar();
    return 0;
}


При вводе первой строки, в файл записывается она полностью, а при последующих не записывается первый символ
Пример >=второй строки
input: test
output: est


Краткое описание кода:
Код должен считать кол-во строк, через цикл ввести эти строки в .txt файл.
После чего посчитать количество слов в каждой строке (пробелов) и записать этот int в соответсвующей строчки того же файла
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
У вас не правильно объявляется массив messge и line. Нужно так:
char message[255]
Первый символ у вас видимо съедает getchar(). С какой целью вы их втыкаете везде?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы