Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2019, 19:37   #1
Timurkanaz
Новичок
Джуниор
 
Регистрация: 19.03.2019
Сообщений: 2
По умолчанию Выгрузить строки из файла и разделить их на слова.

Здравствуйте!
Пишу код на языке СИ.Создал функцию заполнения файла строками:
Код:
FILE zapis(FILE *file,int n){
	int	k=0;
	char str[100];
 file = fopen("test.txt", "w+t");
   do{	

k++;
       fprintf(file,"%s\n", str);}while(k!=n);
		fclose(file);
	}
В теле программы подается кол-во строк n,которое в последствии и подается в функцию.
Далее я хочу с помощью функции fgets() и последующего применения функции strtok разделить каждую строку на слова и вывести каждое с новой строки.
Код:
main() {
 	SetConsoleCP(1251);
SetConsoleOutputCP(1251);
   	int n,k=0;
    FILE *file;
    scanf("%d\n",&n);
    
    zapis(file,n);
    
	file = fopen("test.txt", "r+");
	
	while ( !feof(file) ){
		char mystr[1000];
		fgets(mystr,100,file);
		char* str2=strtok(mystr," ");
		while(str2!=NULL){
			
			printf("%s\n",str2);
			str2=strtok(NULL," ");	
		}
	}
 	
 	
 
 	
 	fclose(file);
}
Я ввожу строки следующим образом:слова через пробел и после последнего введенного слова пробел и enter.
Проблема в том,что программа дает неверный ответ:
(скрин консоли внизу).Непонятно откуда взялся 3-ий break и куча пробелов.
Но если переделать процедуру ввода в файл,то программа начнет работать корректно:
Код:
FILE zapis(FILE *file,int n){
	int	k=0;
	char str[100];
 file = fopen("test.txt", "w+t");
   do{
		gets(str);
	Исправление:	strcat(str," \n");
		k++;
       fprintf(file,"%s\n", str);}while(k!=n);
		fclose(file);
	}
В чем может быть проблема?
Спасибо!
Изображения
Тип файла: jpg Безымянный.jpg (17.1 Кб, 113 просмотров)
Timurkanaz вне форума Ответить с цитированием
Старый 20.03.2019, 19:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Timurkanaz Посмотреть сообщение
Создал функцию заполнения файла строками:
Она заполняет не вводимыми строками, а мусором
p51x вне форума Ответить с цитированием
Старый 21.03.2019, 10:37   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

http://programmersforum.ru/showthread.php?t=327415 - или у меня дежа-вю ?
Вот в третий раз задать один и тот же вопрос - ответ точно нарисуется.
"Чтобы вывести в файл что-то ненужное, надо сначала ввести с клавы что-то ненужное" - советовал доц. К.Матроскин.
И научись выводить скрин по человечески, например, через QIP Shot или что-то подобное, иначе к посту микроскоп надо пришпиливать.
Раньше я Kleptomania считывал текст, но что-то перестала работать. Триальная что ль ? Перешел на QIP Shot

Последний раз редактировалось digitalis; 21.03.2019 в 10:50.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из файла 1 записать в файл 2 строки, упорядочив слова по алфавиту Alexey1002 Помощь студентам 9 04.12.2017 15:01
Необходимо каждый элемент строки разделить на сумму элементов строки IgoreKMaN Общие вопросы C/C++ 4 18.12.2014 01:28
Каждый элемент строки разделить на сумму элементов строки IgoreKMaN Общие вопросы C/C++ 5 16.12.2014 08:19
Файлы в паскале: Скопировать из файла F1 в файл F2 все строки, в которых есть одинаковые слова. shadezx Помощь студентам 7 05.12.2013 23:56
Разделить слова bulldog5293 Общие вопросы Delphi 6 24.05.2011 23:16