#include <stdio.h>
int main(char sendbuf[100])
{
printf (sendbuf);
return 0;
}
どういうわけか、この非常に基本的なプログラムを使用しようとするとクラッシュします。これは、パラメーターとして入力されたものを出力するためのものです。「printf (sendbuf);」という行を削除すると、クラッシュはなくなります。
最初のパラメーターは、char 配列ではなく、整数でなければなりません。正しいプログラムは次のとおりです。
#include <stdio.h>
int main(int argc, char* argv[])
{
if (argc > 1) {
printf( argv[1] );
}
else {
printf( "No arguments provided" );
}
return 0;
}
argv[0] はプログラム名であるため、argv[1] はコマンド ラインで指定される最初のパラメーターです。
C では、次の 2 つの形式の main 関数がサポートされています。
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }
メインからパラメーターを取得するには、コードを次のように変更する必要があります。
#include <stdio.h>
int main(int argc, char* argv[])
{
if (argc > 1){
printf ("%s\n", argv[0]);
}
return 0;
}
またはストリームを使用します。
#include <iostream>
int main(int argc, char* argv[])
{
if (argc > 1){
std::cout << argv[0]) << std::endl;
}
return 0;
}
argv[0] はアプリケーション名で、入力パラメータは argv[1] から始まります (存在する場合)。
の最初の引数main
は、パラメーターの数です。2 番目の引数は文字列の配列です。2 番目の引数の最初の要素 (インデックス 0) は、プログラムの名前です。
#include <stdio.h>
int main(int c, char **argv)
{
printf ("%s\n", c > 1 ? argv[1] : "No Argument");
return 0;
}
実装は、次の 2 つの定義をサポートする必要がありますmain
。
int main() { }
int main(int argc, char* argv[]) { }
それらが他の定義をサポートするかどうかは実装定義です。ただし、許可する実装は知りませんint main(char*)
(これはあなたのものと同等です)。