如何使用fopen打开具有用户指定名称的文件?

时间:2016-07-03 21:03:24

标签: c arrays fopen

现在我有这个:

printf("Please enter your file name with\nthe file type then hit enter followed by ctrl+z\nthen enter 1 final time\n");
char tempChar;
int counter = 0;
char fileName[1000];
int boolean1 = 0;
    while(boolean1 == 0)
    {
        tempChar = getchar();
        if(tempChar == EOF)
            break;
        else
            fileName[counter] = tempChar;
        counter++;
}

其中fileName将是文件的名称。这个命令很棒,并且给了我一个带有所需名称的char数组。但是,我不知道如何将其传递给fopen()。我已经尝试了fopen(fileName, "r");,我尝试使用引用文件名。我也尝试过做fopen("%c",&fileName,"r");我相信这是因为1000长度字符数组中出现的额外垃圾,但我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:1)

C中的字符串需要以空字符(print_r($preArray); )终止,但您没有这样做。

答案 1 :(得分:0)

我认为,您不需要 来获取和EOF,显式地,只需检查新行('\n'),然后null终止数组并将其传递给fopen()

这样的东西
while(1)
    {
        tempChar = getchar();
        if(tempChar == '\n'){
            fileName[counter] = '\0';  //null-terminate
            break;
            }
        else
            fileName[counter] = tempChar;
        counter++;
}

将完成这项工作。

那说,FWIW,

  • getchar()会返回int,这可能不适合char(手头的示例,EOF),因此请将tempChar更改为{{ 1}}类型,为了更好。
  • 始终初始化您的本地变量,例如int

另一种更简单的方法是使用fgets()一次读取用户的输入,处理(删除终止null)并将其传递给char fileName[1000] = {0};