Другие языки программирования и технологии
Как в Си передать динамический адрес файла?
есть конструкция типа FILE *F = fopen("адрес", "r"); нужно чтобы программа запрашивала у пользователя адрес файла с которым будет проводиться дальнейая работа (как запросить-то понятно, вопрос в том как потом передать этот адрес функцие fopen)?
Во-первых, вам неправильно в комментариях указали использовать оператор для потоков >>. В С нет такого оператора. Это оператор языка С++.
Во-вторых, вы можете, как вы написали, динамически передавать имя файла через параметры призапуске вашей программы. Например, ваша программа называется 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" );
и т. д.
Во-вторых, вы можете, как вы написали, динамически передавать имя файла через параметры призапуске вашей программы. Например, ваша программа называется 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" );
и т. д.
м-да. а что какой нибуть чтение с клавы в переменную никак? че нить типа cgets
Ххх Ххх
ну хорошо, а как дальше этот параметр передать функцие fopen?
Похожие вопросы
- Какая разница между статическим IP-адресом и динамическим адресом?
- Как в языке программирования СИ осуществлять вызов подпрограммы, которая находится в другом файле?
- Помогите с программой на Си. (создание многомерных динамических массивов)
- Увиличение динамической матрицы в Си.
- Как в бат файле указать адрес рабочего стола?
- вопрос о динамических массивах в fortran
- Как занести данные считанные из файла в массив на языке си?
- Динамические массивы. СИ
- Язык си, не могу понять динамическое выделение памяти.
- динамический массив в Visual C++