在一段代码中替换stdin

时间:2011-02-10 10:40:38

标签: c stdin

我有一段使用stdin的代码。当我从命令行运行程序时,我将它传递给wav文件的位置,即/Users/username/Desktop/music.wav。

代码仅在C中编写.stdin变量在两个函数中运行。

如何使用文件目录和位置的输入替换代码中的stdin?

换句话说,我如何将'/Users/username/Desktop/music.wav'硬编码为两个不同的C函数。

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找freopen

如果我理解正确,你从argv[1]读取文件名并调用freopen():

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

答案 1 :(得分:0)

不是说我当然希望鼓励硬连线....

听起来您希望定义文件位置&从多个地方引用它?

你可以#define标题中的路径&然后将其包含在多个文件中。

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) {

}