【发布时间】:2015-04-25 04:14:09
【问题描述】:
我有以下代码从命令行读取文件名并打开该文件:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
FILE *datei;
char filename[255];
//filename = argv[1];
//datei=fopen(filename, "r");
datei=fopen(argv[1], "r");
if(datei != NULL)
printf("File opened");
else{
printf("Fehler beim öffnen von %s\n", filename);
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
此示例有效,但我想将命令行中的字符串写入 char 数组并将该 char 数组传递给 fopen(),但出现编译器错误
Error: assignment to expression with array type filename = argv[1];
这个错误是什么意思,我可以做些什么来解决它?
【问题讨论】:
-
使用
strcpy(filename, argv[1]); -
在“文件已打开”消息的末尾添加一个 \n。在此指令周围使用大括号以与 else 子句保持一致。
-
使用
strncpy(filename, argv[1], sizeof filename);
标签: c arrays expression variable-assignment argv