Другие языки программирования и технологии

Как в Си передать динамический адрес файла?

есть конструкция типа FILE *F = fopen("адрес", "r"); нужно чтобы программа запрашивала у пользователя адрес файла с которым будет проводиться дальнейая работа (как запросить-то понятно, вопрос в том как потом передать этот адрес функцие fopen)?
Ххх Ххх
Ххх Ххх
1 221
Во-первых, вам неправильно в комментариях указали использовать оператор для потоков >>. В С нет такого оператора. Это оператор языка С++.

Во-вторых, вы можете, как вы написали, динамически передавать имя файла через параметры призапуске вашей программы. Например, ваша программа называется prog.exe. Тогда при запуске вы можете задать в командной строке

prog file_name

Чтобы обработать этот параметр в самой программе, нужно указать функцию main() в следующем виде

int main( int argc, char *argv[] )

argv[ 1 ] и будет содержать имя вашего файла. Например,

#include <stdio.h>

int main( int argc, char *argv[] )
{
FILE *f;

if ( argc > 2 )
{
puts( "\nError. Should be 'prog file_name'" );
}

f = fopen( argv[ 1 ], "r" );

if ( f == NULL )
{
printf( "File open error for file %s\n", argv[ 1 ] );
}

и т. д.

Либо вы можете использовать функцию gets() для ввода имени файла в программе. Например

#include <stdio.h>

int main( int argc, char *argv[] )
{
FILE *f;
char file_name[ 80 ];

printf( "Enter a file name: " );
puts( file_name );

f = fopen( file_name, "r" );

и т. д.
Александр Ваховский
Александр Ваховский
79 586
Лучший ответ
м-да. а что какой нибуть чтение с клавы в переменную никак? че нить типа cgets
Prince_On_White Horse
Prince_On_White Horse
17 417
Ххх Ххх ну хорошо, а как дальше этот параметр передать функцие fopen?