1

私は C コースの課題に取り組んでおり、ユーザーの入力を取り込んで変数に格納し、後でコードで使用できるようにしようとしています。私の主な機能は次のようになります。

int main() {
    // Variables here
    char* inputLine[10];

    do {
        printf("Insert number....");
        scanf("%s\n", inputLine);
        // More stuff here
    }
    return 0;
}

このコードでは、一連の警告が表示warning: format specifies type 'char *' but the argument has type 'char **' [-Wformat]されます。変数宣言を次のように変更すると、

char* inputLine = NULL;

コードを実行するとセグフォルトが発生します。誰かが私が間違っていることと、この変数を初期化するときにメモリ内で何が起こるかの違いを説明してもらえますか?

4

3 に答える 3

0

ただし、コードを編集して削除*すると答えが得られますが、通常の配列は非推奨になり、現在、プログラマーはvector, を 使用していますnormal array in C not safe:

#include <iostream>
#include <vector>
using namespace std;
int main() {

    vector<string> inputLine;

every で定義できますdata type:

vector<int> myvar;

または、多次元を定義できますvector:

vector< vector <int> > myvar;
于 2013-10-07T17:39:49.527 に答える