我试图在C中打开一个文件,但我总是得到它无法打开文件。我有以下代码:
int i = 0;
char delims[] = " ";
char *result = NULL;
char * results[10];
result = strtok( cmdStr, delims );
while( result != NULL ) {
results[i] = result;
i++;
result = strtok(NULL, " ");
}
printf(results[1]); // it defo shows the name file here
FILE *fp;
char ch;
if((fp = fopen(results[1],"r")) == NULL) {
printf("Cannot open file.\n");
} else {
while((ch = fgetc( fp )) != EOF) {
printf("%c", ch);
}
}
fclose(fp);
结果[1]是文件的名称。因此,如果我有“show file.txt”之类的内容,结果[0]将显示,结果[1]为file.txt。
然而它并没有在fopen上打开它。但是,如果我在代码fopen("file.txt", "r")
中插入...就可以了。
答案 0 :(得分:2)
我最好的猜测是results[1]
在最后包含一个迷路换行符。正如丹尼尔和杰瑞所建议的那样,一个廉价的解决办法就是在分隔符数组中加入\n
。
无关:ch
的类型应为int
而不是char
。