带指针、常量和字符串格式的 Sprintf
Sprintf with pointers, constants and string formatting
我是 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;
}
如 BLUEPIXY 所述,我的块需要包含“char name[20]; if(argc == 3){ strcpy(name, argv[2]); } else { sprintf(name,"new %s file",type); } strcat(command, name);
”。在这些更改之后,我将所有 strcat
转换为 one sprinf
.
我之前对存储 argv
项目的理解是编译需要 char 指针,因为不会定义 args。由于 name
.
的初始化,它们不再需要
我现在的压缩代码是这样的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char command[100];
char * type = argv[1];
char name[50];
if (argc == 3) {
strcpy(name, argv[2]);
} else {
sprintf(name,"new %s file",type);
}
sprintf(command,"cd . > \"%s.%s\"",name,type);
system(command);
return 0;
}
再次感谢BLUEPIXY消除了我的误会。
我是 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;
}
如 BLUEPIXY 所述,我的块需要包含“char name[20]; if(argc == 3){ strcpy(name, argv[2]); } else { sprintf(name,"new %s file",type); } strcat(command, name);
”。在这些更改之后,我将所有 strcat
转换为 one sprinf
.
我之前对存储 argv
项目的理解是编译需要 char 指针,因为不会定义 args。由于 name
.
我现在的压缩代码是这样的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char command[100];
char * type = argv[1];
char name[50];
if (argc == 3) {
strcpy(name, argv[2]);
} else {
sprintf(name,"new %s file",type);
}
sprintf(command,"cd . > \"%s.%s\"",name,type);
system(command);
return 0;
}
再次感谢BLUEPIXY消除了我的误会。