-3
#include <stdio.h>
int main(char sendbuf[100]) 
{
  printf (sendbuf);
  return 0;
}

どういうわけか、この非常に基本的なプログラムを使用しようとするとクラッシュします。これは、パラメーターとして入力されたものを出力するためのものです。「printf (sendbuf);」という行を削除すると、クラッシュはなくなります。

4

5 に答える 5

1

最初のパラメーターは、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] はコマンド ラインで指定される最初のパラメーターです。

于 2012-12-21T23:46:29.613 に答える
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] から始まります (存在する場合)。

于 2012-12-21T23:46:42.500 に答える
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;
}
于 2012-12-21T23:47:47.230 に答える
0

実装は、次の 2 つの定義をサポートする必要がありますmain

int main() { }
int main(int argc, char* argv[]) { }

それらが他の定義をサポートするかどうかは実装定義です。ただし、許可する実装は知りませんint main(char*)(これはあなたのものと同等です)。

于 2012-12-21T23:48:24.177 に答える