1

私は最も基本的なことをしようとしていますが、レンガの壁にぶつかっています。後でプログラムで使用するためにコマンドラインからファイル名を読み込もうとしていますが、argv[] から名前を抽出することさえできないようです。コードは次のとおりです。

#include <iostream>
#include <string.h>

using namespace std;

int main(int argc, char **argv[]){
    cout << "argc = " << argc << "\n\n";
    cout << "Filename: " << argv[1] << "\n";
    return 0;
}

エラーチェックがないため、もちろん引数を提供する入力でテストしています。プログラムを実行すると、次のようになります。

./a.out testfilename

*

argc = 2

Filename: 0x7fff56e41d30

argv[1] は char の配列へのポインタであることを理解したので、この出力は理にかなっています。ただし、次の変更を加えると、

cout << "Filename: " << argv[1] << "\n";

cout << "Filename: " << *argv[1] << "\n";

argv[1] を逆参照して実際の文字列を取得しようとすると、セグメンテーション違反が発生します..

4

2 に答える 2

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

また

int main(int argc, char **argv){

だがしかし

int main(int argc, char **argv[]){
于 2013-05-01T15:34:21.847 に答える
0

それは次のようになります。

int main(int argc, char *argv[])
                        ^ only one * here
于 2013-05-01T15:34:32.053 に答える