现在我有这个:
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长度字符数组中出现的额外垃圾,但我该如何解决这个问题呢?
答案 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};
。