【发布时间】:2016-04-10 00:32:24
【问题描述】:
我是 C 的新手,我在简化这个程序时遇到了麻烦。我正在尝试将name once 和strcat name 初始化为command once。它是一个命令行可执行文件,带有两个参数和一个可选参数,用于文件名“new py”或“new txt”或“new py script”。我运行 Windows 的 MinGW 进行编译。
有没有一种类型可以用一行存储 argv 值和字符串常量?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char command[100] = "cd . > ";
char *type = argv[1];
char * name;
strcat(command,"\"");
if (argc == 3) {
char * name = argv[2];
//strcat(command,name);
} else {
char name[20];
sprintf(name,"new %s file",type);
//strcat(command,str);
}
strcat(command,name);
strcat(command,".");
strcat(command,type);
strcat(command,"\"");
system(command);
return 0;
}
【问题讨论】:
-
char * name = argv[2];和char name[20];在 if-else 块的本地范围内。修复示例:char name[20]; if(argc == 3){ strcpy(name, argv[2]); } else { sprintf(name,"new %s file",type); } strcat(command, name); -
谢谢。现在已经修好了。你认为我可以
sprintf命令的其余部分而不是 strcats 吗? -
你最喜欢的。
标签: c pointers printf argv argc