powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с вводом/выводом.
25 сообщений из 44, страница 1 из 2
Проблема с вводом/выводом.
    #38307338
AN90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте! При использовании scanf_s почему-то в строку ничего не вводится. При использовании fopen_s укзатель на файл остаётся неинициализированным. scanf_s пока заменил на cin. Подскажите, пожалуйста, в чём дело? Код ниже.

FILE *f_source, *f_destination;
char *source_path, *destination_path,*mode;
................................................................
scanf_s("%s",source_path);
................................................................
scanf_s("%s",destination_path);
................................................................
mode="r";
fopen_s(&f_source,source_path,mode);
mode="w";
fopen_s(&f_destination,destination_path,mode);
char c;
fscanf_s(f_source,"%c",&c,1);
fprintf_s(f_destination,"%c",&c);
................................................................

На fprintf_s(f_destination,"%c",&c); выскакивает ошибка, добавленная во вложении.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38307350
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90,

Переменные source_path и destination_path равны NULL . Их нужно проинициализировать, например, так:
Код: plaintext
1.
char source_path[512], destination_path[512], *mode;

А также корректно использовать функции scanf_s :
Код: plaintext
1.
2.
scanf_s("%s",source_path, 512);
scanf_s("%s",destination_path, 512);
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308790
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90,

Почему не хотите использовать ifstream? Код получится более компактным и читабельным, а следовательно - менее подверженным ошибкам.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308793
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumAN90,

Почему не хотите использовать ifstream? Код получится более компактным и читабельным, а следовательно - менее подверженным ошибкам.Потому что не все то С++ что слегка похоже на него.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308798
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПотому что не все то С++ что слегка похоже на него.
Ну почему же слегка...
AN90пока заменил на cin
Разве в C есть cin?
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308804
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumWhite OwlПотому что не все то С++ что слегка похоже на него.
Ну почему же слегка...Потому что кроме странной оговорки о cin весь код приведенный AN90 является примером использования С.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308810
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПотому что кроме странной оговорки о cin весь код приведенный AN90 является примером использования С.
по моему спор ни о чём. Раз автор заменил на cin (согласно его заявлению), значит он однозначно использует C++, а не C. Весь приведённый выше код можно совершенно спокойно использовать как в C, так и в C++. Я предпочитаю так не писать в C++, но на вкус и цвет все фломастеры разные, видимо автор по каким-то соображениям решил написать код в функциональном стиле. Не суть, ifstream на мой взгляд был бы более предпочтителен в данном случае.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308813
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositumвидимо автор по каким-то соображениям решил написать код в функциональном стиле. Не суть, ifstream на мой взгляд был бы более предпочтителен в данном случае.А при чем здесь "функциональный стиль"?
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308816
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА при чем здесь "функциональный стиль"?[/quote]
Честно говоря, твой вопрос меня удивляет...
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38308857
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumWhite OwlА при чем здесь "функциональный стиль"?
Честно говоря, твой вопрос меня удивляет...Да, да, я уже понял, слово красивое, но что оно означает ты не знаешь.
Во первых, C это процедурный язык, а не функциональный.
Во вторых, "функциональный стиль" это термин из лингвистики а не из IT.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38315118
AN90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, сглупил, я конечно. Инициализировал переменные:
f_source=new FILE;
f_destination=new FILE;
Всё равно при отладке в указателях какая-то ерунда, и программа вылетает на том же самом месте.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38315133
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90f_source=new FILE;

Такого я еще не видел. А я видел многое

Почитайте что-ли какой-нибудь учебник по С вместо гадания. Поверьте - вы не угадаете ответ.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38315271
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanAN90,

Переменные source_path и destination_path равны NULL . Их нужно проинициализировать, например, так:
Код: plaintext
1.
char source_path[512], destination_path[512], *mode;

А также корректно использовать функции scanf_s :
Код: plaintext
1.
2.
scanf_s("%s",source_path, 512);
scanf_s("%s",destination_path, 512);



А зачем ты тип переменных-то поменял?
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38315274
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumWhite OwlА при чем здесь "функциональный стиль"?
Честно говоря, твой вопрос меня удивляет...[/quot]

Меня нет. При чем?
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316340
AN90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря, затрудняюсь определить самостоятельно промах. После открытия файлов имеем следующее:

Модератор: Вложение удалено.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316377
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90,

Финальный код выложи, чтобы обсуждать было что. Код ЦЕЛИКОМ.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316383
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90Честно говоря, затрудняюсь определить самостоятельно промах. После открытия файлов имеем следующее:У меня достаточно большой экран, но такие картинки в него не лезут. Научись пожалуйста пользоваться gimp'ом или photoshop'ом. Обрезать пустые края картинки это вообще элементарная операция.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316390
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90,

Код у тебя трижды неправильный:

MSDN:
Unlike scanf and wscanf, scanf_s and wscanf_s require the buffer size to be specified for all input parameters of type c, C, s, S, or [. The buffer size is passed as an additional parameter immediately following the pointer to the buffer or variable. For example, if reading a string, the buffer size for that string is passed as follows:

char s[10];

scanf("%9s", s, 10);

The buffer size includes the terminating null. A width specification field may be used to ensure that the token read in will fit into the buffer. If no width specification field is used, and the token read is too big to fit in the buffer, nothing will be written to that buffer.


Кроме этого буфера эти ещё и выделять надо, и они естественно не FILE*.

Рекомендация: сначала напиши все на scanf, потом поделаешь уже на scanf_s.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316391
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivAN90,

Код у тебя трижды неправильный:

MSDN:
Unlike scanf and wscanf, scanf_s and wscanf_s require the buffer size to be specified for all input parameters of type c, C, s, S, or [. The buffer size is passed as an additional parameter immediately following the pointer to the buffer or variable. For example, if reading a string, the buffer size for that string is passed as follows:

char s[10];

scanf("%9s", s, 10);

The buffer size includes the terminating null. A width specification field may be used to ensure that the token read in will fit into the buffer. If no width specification field is used, and the token read is too big to fit in the buffer, nothing will be written to that buffer.


Кроме этого буфера эти ещё и выделять надо, и они естественно не FILE*.

Рекомендация: сначала напиши все на scanf, потом переделаешь уже на scanf_s.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316408
AN90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, так а почему же компилятор ничего не выдаёт? Я же поставил там единицу в размер?
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316410
AN90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, и, кстати, VS 2012 почему-то потребовала и именно fscanf_s, fprint_s. Вот код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
FILE *f_source, *f_destination;
	char *source_path, *destination_path,*mode;
	
	source_path=(char *) calloc(size_file_pass,sizeof(char));
	destination_path=(char *) calloc(size_file_pass,sizeof(char));
	printf("Enter full path to source file: ");
	
	cin >> source_path;	
	printf("Enter full path to destination file: ");
	
	cin >> destination_path;
	mode="r";
	fopen_s(&f_source,source_path,mode);
	mode="w";
	fopen_s(&f_destination,destination_path,mode);
	char c;
	fscanf_s(f_source,"%c",&c);
	fprintf_s(f_destination,"%c",&c);
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316493
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlAN90Честно говоря, затрудняюсь определить самостоятельно промах. После открытия файлов имеем следующее:У меня достаточно большой экран, но такие картинки в него не лезут. Научись пожалуйста пользоваться gimp'ом или photoshop'ом. Обрезать пустые края картинки это вообще элементарная операция.

Какой гимп, какой фото шоп? Простой paint с этим справляется великолепно!
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316495
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90MasterZiv, так а почему же компилятор ничего не выдаёт? Я же поставил там единицу в размер?

Потому что и не должен ничего выдавать.
А не должен потому что не может. И если бы ты, двоечник, учил бы про функции с элипсисом, и как туда передаются параметры, ты бы об этом знал.
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316498
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90 Я же поставил там единицу в размер?

Где ты поставил размер?
...
Рейтинг: 0 / 0
Проблема с вводом/выводом.
    #38316508
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AN90,

, и, кстати, VS 2012 почему-то потребовала и именно fscanf_s, fprint_s.

Потому что без префикса "f" функции работают неявно с stdin и stdout, а у тебя явно указывается файл.
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с вводом/выводом.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]