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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2019, 13:07   #1
Timurkanaz
Новичок
Джуниор
 
Регистрация: 19.03.2019
Сообщений: 2
По умолчанию Не понимаю как ведет себя функция fgets() в языке СИ

Здравствуйте!
Пишу код на языке СИ.Создал функцию заполнения файла строками:
Код:
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.
Проблема в том,что программа дает неверный ответ:
(скрин консоли внизу).
Но если переделать процедуру ввода в файл,то программа начнет работать не смотря ни на что:
Код:
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; 19.03.2019 в 13:21.
Timurkanaz вне форума Ответить с цитированием
Старый 19.03.2019, 13:10   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

1. Как fgets относится к данному коду?
2. Вы зачем мусор пишите в файл?
p51x вне форума Ответить с цитированием
Старый 19.03.2019, 13:14   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так вопрос-то в чем?
Цитата:
Сообщение от Timurkanaz Посмотреть сообщение
Пишу код на языке СИ
не пишите так никогда ни на каком языке.
Форматируйте нормально код придерживаясь какого-то популярного соглашения (в идеале подключить какой-нибудь линтер типа clang format, astyle).
https://ru.hexlet.io/blog/posts/naming-in-programming
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 19.03.2019 в 13:19.
Alex11223 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi странно себя ведет HELMOS Общие вопросы Delphi 5 04.01.2014 17:07
Компьютер ведет себя не естесственно genrix Компьютерное железо 5 04.02.2013 21:13
Странно ведет себя компилятор pufystyj Общие вопросы C/C++ 2 02.01.2013 06:35
Ноут странно себя ведет feesta Помощь студентам 1 29.05.2011 23:08
Почему графика ведет себя так: Иллидан Общие вопросы Delphi 6 10.10.2008 00:13