2011-02-10 4 views
0

У меня есть кусок кода, который использует stdin. Когда я запускаю программу из командной строки, я передаю ей местоположение wav-файла i.e./Users/username/Desktop/music.wav.Замена stdin внутри фрагмента кода

Код написан только на C. Параметр stdin работает в двух функциях.

Как заменить stdin внутри кода на вход каталога и местоположения файла?

Другими словами, как я могу жестко закодировать '/Users/username/Desktop/music.wav' на две разные функции C.

+0

вы используете Linux? – BlackBear

+0

Из предыдущих аналогичных вопросов он, кажется, использует Mac OS X –

ответ

1

Я думаю, что вы ищете freopen.

Если я правильно понимаю, вы читаете имя файла из argv[1] и вызовите freopen():

freopen(argv[1], "r", stdin); 
+1

@Simone. В самом деле? Разве это не вопрос передачи строки? –

+0

@ Симоне. Кроме того, это похоже на stdout. Будет ли это работать на stdin? –

+0

@Eric просмотреть обновления. – Simone

0

Не то, что я хочу, чтобы поощрить Электромонтаж конечно ....

Это звучит, как вы хотите для определения местоположения файла & обратитесь к нему из нескольких мест?

Вы можете # определить путь в заголовке &, а затем включить его в несколько файлов.

E.g.

header.h

#define FILE_LOCATION "/Users/username/Desktop/music.wav" 

myProgram.c

#include "header.h" 

void functionA() { 
    fopen(FILE_LOCATION, ...); 

    /* 
    * etc .. 
    */ 
} 

void functionB() { 

    printf("The file is %s\n", FILE_LOCATION); 

    /* 
    * etc .. 
    */ 
} 

myOtherProgram.c

#include "header.h" 

void someOtherFunction() { 
    doSomethingWith(FILE_LOCATION); 
} 

void doSomethingWith(char *fileLoc) { 

} 
Смежные вопросы