0

Cプログラミングで次の問題があります。

文字列の配列がwords[10][50]として保存されています。配列から各文字列を抽出して、それを別の関数に渡したいと思います。私は次のことを試しました:

 #include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

int Check_Anagram(char*,char*);

void main()
{
    char words[10][20];
    int i;
    int flag;
    for(i=0;i<3;i++)
    {
        scanf("%s\n",words[i][20]);
    }
    for(i=1;i<10;i++)
    {
        flag = Check_Anagram(words[i][20],words[i-1][20]);      
    }
    getch();
}

int Check_Anagram(char *a,char *b)
{
    printf("%s %s\n",a,b);
    return 1;
}

これにより、コンパイル中に例外が発生します。ここで、「printf」ステートメントを使用すると、この命名法は正常に機能すると思います。ii words [i]は、2次元の単語配列から文字列「i」を出力します。チェック機能で同じことをしようとすると、エラーが発生します。

soemoneは、この通過を行う方法を教えてもらえますか?

PSプログラムの効率のエラーなどは無視してください。私はあなたの助けが必要です、そしてこれは関数に渡される文字列を学ぶための単なるテストプログラムですありがとう

4

4 に答える 4

4

あなたは合格していますwords[i][20]words[i]代わりに、両方のループを渡す必要があります。これを試して:

for(i = 1; i < 3; i++) /* i < 3 */
{
    flag = Check_Anagram(words[i], words[i-1]);
}

もう1つの問題は、3文字列を読み取って印刷しようとしていることです10。したがって、渡すwords[3]とガベージが含まれprintfます。0で終了する必要のないガベージを出力しようとします。

于 2012-02-20T08:38:12.297 に答える
2

最初のforループでは、iが0の場合、words [-1]を指していますが、これは例外です。

于 2012-02-20T08:35:27.493 に答える
1

フラグ=Check_Anagram(words [i] [20]、words [i-1] [20]);

Check_Anagramの各単語の21番目の文字を渡します。代わりに、単語自体を渡す必要があります。

flag = Check_Anagram(words[i],words[i-1]);

を使用する場合にも同様の問題がありますscanf。コンソールから使用する各単語への行を読み取るには、次のようにします。

for(i=0;i<10;i++)
{
    scanf("%s\n",words[i]);
}
于 2012-02-20T08:38:35.613 に答える
0
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

int Check_Anagram(char [],char []);

void main()
{
    char words[10][20];
    int i;
    int flag;
    for(i=0;i<3;i++)
    {
        scanf("%s\n",words[i]);
    }
    for(i=1;i<10;i++)
    {
        flag = Check_Anagram(words[i],words[i-1]);      
    }
    getch();
}

int Check_Anagram(char a[],char b[])
{
    printf("%s %s\n",a,b);
    return 1;
}

すべてのユーザーの助けを借りて、ようやく修正されました。文字列の配列から抽出した文字列を別の関数に渡すのに苦労している人のために、修正されたコードを投稿しました。それが役に立てば幸い。

于 2012-02-21T09:10:52.477 に答える