1

ダイナミックメモリ内の配列を操作するためのプログラム。Cに相当するものが必要です。誰か助けてもらえますか?

const int n = 6;
char **words = (char**) malloc(n *sizeof(char*));
for(int i = 0 ; i < n; i++)
    words[i] = (char*)malloc( 50 * sizeof(int));

for(int i = 0; i < n; i++) 
{
    cin>>words[i];
}

cout<<endl;
for(int i = 0; i < n; i++) 
{
    if(words[i][0] == 'q')
        cout<<words[i]<<endl;
}
4

4 に答える 4

6

そこにある唯一のC++パーツcincout; それらは簡単に変更できます。

cin>>words[i];

になります

scanf("%s", words[i]);

また

gets(words[i]);

その間

cout<<words[i]<<endl;

になります

puts(words[i]);

ちなみに、//には、cin6文字のスペースを割り当てているが、任意の長さの入力を受け入れているため、バッファオーバーフローが発生する可能性がありますscanfgets代わりに行う必要があります:

scanf("%6s", words[i]);

または(直接使用するため、より保守しやすくなりますn

fgets(words[i], n, stdin);

(ただし、これには文字列の末尾が含ま\nれます)

于 2012-11-16T00:26:41.800 に答える
2

使用しているC++機能はcinとcoutだけです。cin>>words[i]gets(words[i])に置き換えcout<<words[i]<<endlますputs(words[i])

于 2012-11-16T00:25:38.933 に答える
1

scanf("%s", &words[i])stdinからデータを入力printf("%s\n", words[i])し、stdoutに出力するために 使用します。

于 2012-11-16T00:25:40.173 に答える
0

あなたの好きなように:

    const int n = 6;
    char **words = (char**) malloc(n *sizeof(char*));

    int i = 0;

    for( i= 0 ; i < n; i++)
    {
        words[i] = (char*)malloc( 50 * sizeof(char));
    }

    for(i = 0; i < n; i++) 
    {
        scanf("%s", words[i]); 
    }

    printf("\n");

    for(i = 0; i < n; i++) 
    {
        if(words[i][0] == 'q')
            printf("%s\n", words[i]);

    }
于 2012-11-16T00:46:15.353 に答える