Sprintf с указателями, константами и форматированием строк
Я новичок в C, и у меня были проблемы с упрощением этой программы. Я пытаюсь инициализировать name
один раз и strcat
name
в command
один раз Это исполняемый файл командной строки, который принимает два аргумента и один необязательный аргумент для имени файла "новый py" или "новый txt", или "новый скрипт py". Я запускаю MinGW Windows для компиляции.
Есть ли тип, позволяющий хранить значение 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;
}
1 ответ
Как упомянуто BLUEPIXY, мой блок должен включать " char name[20]; if(argc == 3){ strcpy(name, argv[2]); } else { sprintf(name,"new %s file",type); } strcat(command, name);
". После этих изменений я преобразовал все strcat
с одного sprinf
,
Мое предыдущее понимание хранения argv
было то, что указатели на символы были необходимы для компиляции, потому что аргументы не были бы определены. Они больше не нужны из-за инициализации 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 раз, спасибо вам, BLUEPIXY, за BLUEPIXY моего недопонимания.