带指针、常量和字符串格式的 Sprintf

Sprintf with pointers, constants and string formatting

我是 C 的新手,我在简化这个程序时遇到了麻烦。我正在尝试将 name oncestrcat 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消除了我的误会。