私はC言語の新人です。このプログラムを単純化するのに問題がありました。私は最初にname
をとstrcat
name
からcommand
の間で初期化しようとしています。これは、ファイル名 "new py"または "new txt"、または "new py script"に対して2つの引数と1つのオプションの引数を取るコマンドライン実行可能ファイルです。私はコンパイルするためにWindowsのMinGWを実行します。Sprintfでポインタ、定数、文字列の書式設定
argv値と1行の文字列定数の格納を許可するタイプはありますか?
#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(名前、 "新しい%sファイル"、タイプ); } strcat(command、name); ' – BLUEPIXY
ありがとう。それは今のところ固定です。 strcatsの代わりにコマンドの残りの部分をsprintfできると思いますか? –
お気に入りのいずれか。 – BLUEPIXY