Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 23.06.2015, 23:33   #1
LalkaAzazalka
Пользователь
 
Регистрация: 16.04.2015
Сообщений: 11
По умолчанию Прочитать текстовый файл. Для каждой строки определить и вывести на экран её порядковый номер и длину (СИ).

Программа есть, но есть и проблема, программа не правильно считает длину строки, например в строке 16 символов, а программа пишет, что 17. Помогите решить проблему.
Код:
#include <stdio.h>
#include <stdlib.h>

int main()
{
	printf("Text file operations\n\n");
	FILE *pTextFile = fopen("TextFile.txt","r");
	if(pTextFile == NULL)
    {
    printf("Net fayla");
    return 0;
    }
	char txt;
	int i = 0,lngt = 0;
	printf("%d ",++i);
	while(!feof(pTextFile)){
    fread(&txt,sizeof(char),1,pTextFile);
    lngt++;
    if(txt == '\n')
    printf("\ndlina stroki = %d\n",lngt),
    lngt = 0;
    printf("%c",txt);
    if(txt == '\n')
    printf("%d ",++i);
	}
	printf("\ndlina stroki = %d\n",lngt);
	return 0;
}
LalkaAzazalka вне форума Ответить с цитированием
Старый 24.06.2015, 00:01   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,664
По умолчанию

Вот, значит, как выглядит форматирование "наизнанку"! Теперь я виде всё!
Ну, автор, ты и тролль! Я минут 5 въезжал, что ж не так с этим куском говнокода...
ха
ха
и ещё раз ха!

да, читать текстовый файл побайтно - это высший пЕлотажЪ.
з.ы. прога отрабатывает правильно, показывая 17 символов, т.к. ты (или не ты?) запрограамирова её плюсовать и \n к общей сумме.

Даигноз - до 1 сентября отдыхать, потом - торжественная линейка и т.д.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.06.2015, 09:38   #3
LalkaAzazalka
Пользователь
 
Регистрация: 16.04.2015
Сообщений: 11
По умолчанию

После
Код:
printf("%d ",++i);
заменил следующие 3 строки на

Код:
while(fscanf(pTextFile,"%c", &txt)!= EOF)
	{
    ++lngt;
Программа стала последнюю строку правильно считать
Как сделать, чтобы она не плюсовала \n к общей сумме ?
LalkaAzazalka вне форума Ответить с цитированием
Старый 24.06.2015, 09:44   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,664
По умолчанию

Перестань срадать куйнёй, выкинь этот говнокод и напиши свой хороший, годный код, в котором не будет считывания текста посимвольно, а замером длины строк будет заниматься стандартная функция strlen().
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.06.2015, 12:00   #5
LalkaAzazalka
Пользователь
 
Регистрация: 16.04.2015
Сообщений: 11
По умолчанию

Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	printf("Text file operations\n\n");
	FILE *pTextFile = fopen("TextFile.txt","r");
	char string[100];
	if(pTextFile == NULL)
    {
    printf("Net fayla\n");
    return 0;
    }

	int i = 1;

	while(fgets(string, 100, pTextFile))
	{

    printf("Stroka %d - Dlina stroki - %d - ", i++, strlen(string));

    if(string[strlen(string)] == '\n')
    {
			string[strlen(string)] = '\0';
    }
    printf("%s\n",string);
	}

	fclose(pTextFile);

    return 0;
}
Так нормально ? Или опять говнокод ?
LalkaAzazalka вне форума Ответить с цитированием
Старый 24.06.2015, 12:03   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,664
По умолчанию

У тебя компилятора нету, штоли? Не буду я это читать с таким форматированием.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.06.2015, 12:12   #7
LalkaAzazalka
Пользователь
 
Регистрация: 16.04.2015
Сообщений: 11
По умолчанию

Компилятор не ругается, всё работает нормально, кроме подсчёта длины строки, для последней строки длина подсчитывается нормально, а для остальных длина на 1 больше, так как он прибавляет \n к общей сумме, как ты писал.
LalkaAzazalka вне форума Ответить с цитированием
Старый 24.06.2015, 12:18   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,664
По умолчанию

Следовательно, надо сделать ЧТО?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.06.2015, 12:21   #9
LalkaAzazalka
Пользователь
 
Регистрация: 16.04.2015
Сообщений: 11
По умолчанию

Так я всё это время это и спрашиваю
LalkaAzazalka вне форума Ответить с цитированием
Старый 24.06.2015, 12:24   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,664
По умолчанию

Цитата:
Так я всё это время это и спрашиваю
Если результат больше на 1, надо отнять 1.

КЭП.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводить только измененные строки. Перед каждой строкой записывать номер строки в исходном тексте.используя строки и текст.файл nero4ka C++ Builder 1 13.06.2015 08:14
Вычислить сумму элементов каждой строки матрицы A(NxM) , определить наименьшее значение этих сумм и номер соответствующей строки merilyn Помощь студентам 3 14.12.2013 11:39
Как вывести на экран номер строки с максимальной суммой элементов и номер столбца с минимальной суммой? Vetal888888 C# (си шарп) 4 20.12.2011 13:46
Прочитать и вывести на экран файл protrence Паскаль, Turbo Pascal, PascalABC.NET 16 05.03.2011 01:10
Как прочитать файл с картинкой и вывести её на экран zumm Паскаль, Turbo Pascal, PascalABC.NET 3 28.10.2009 09:31