您好我刚刚开始使用C编程,我正在尝试读取文件并将文件名作为参数而不是结尾.txt。我想在我的代码中添加.txt:./ myexample.exe文件
如果我使用file.txt没有问题,但我不知道如何更改argv [1] 我试过char * n = argv [1] +“。txt”;它不起作用,我什么都不知道..
int main(int argc, char* argv[]) {
char *n = argv[1] +".txt";
FILE *fp1;
fp1 = fopen(n , "r");
如果我使用char *n = argv[1]+".txt"
错误:无效操作数到二进制+(有'char *'和'char *')
答案 0 :(得分:3)
在您的代码中,
char *n = argv[1] +".txt";
不符合您的想法。在C中,+
不能用于连接字符串。
仅供参考,来自C11
,章节§6.5.6
另外,两个操作数都应具有算术类型,或者一个操作数应为a 指向完整对象类型的指针,另一个指针应具有整数类型。(递增为 相当于添加1。)
两个操作数都不能是指向对象的类型。
如果您打算连接字符串,请使用strcat()
,但请确保
答案 1 :(得分:1)
安全地做这件事很烦人:你需要小心做一个足够大的char
数组来保存整个字符串。一种方式:
size_t arglen=strlen(argv[1]);
char* filename=malloc(arglen+5); //Enough to hold the whole string
strcpy(filename,argv[1]);
strcat(filename,".txt");
请务必稍后free
指针。
答案 2 :(得分:0)
你不能用+连接字符串。使用strcpy和strcat:
char n[256];
strcpy(n, argv[1]);
strcat(n, ".txt");
确保n足够大以容纳文件名+扩展名。