0

ランダムな大文字の文字列を生成し、ユーザーからの文字とともに大文字のユーザー入力を取得するプログラムを作成しています。ランダム文字列内のユーザー入力文字のインスタンスについては、その文字をユーザーが入力した文字に置き換えます。

たとえば、s1 = {BDHFKYL} s2 = {YEIGH} c = '*'

出力 = BD*FK*L

とにかく、メインの下の関数宣言で型の競合エラーが発生し、関数呼び出しで暗黙の装飾をしています。誰かが理由を知っていますか?前もって感謝します。

#include <stdio.h>
#include <stdlib.h>

void fillS1(char x[42]);

void fillS2(char x[22]);

void strfilter(char a[], char b[], char c);

int main(int argc, const char * argv[])
{
char s1[42];
char s2[22];


fillS1(s1);

//printf("%s\n", s1);

puts(s1);

fillS2(s2);

strFilter(s1, s2, '*');  //Implicit declaration here


return 0;
}

void fillS1(char x[])
{
for (int i = 0; i < 40; i++)
    x[i] = 'A' + random() % 26;
x[40] = (char)0;
}

void fillS2(char x[]){

int i = 0;


printf("Please enter at least 2 capital letters and a maximum of 20.\n");
while (( x[i] = getchar()) != '\n' ) {

    i++;

    }

x[i] = '\0';

if (i < 3) {
    printf("You need at least two letters");
}

else if (i > 21){
    printf("You cannot have more than twenty letters");
}

/*else if (((i > 'a')) || ((i < 'z'))){
    printf("You many only have capital letters");
}   */



 else puts(x);
}

void strFilter(char a[], char b[], char c){ //Conflicting types error here
int i = 0;
int n = 0;

while (n < 21) {

    for (i = 0; i < 41; i++) {
        if (a[i] == b[n]){
            c = a[i];
        }
    }
    i = 0;
    n++;
}

puts(a);
}
4

1 に答える 1

4

識別子に不一致があります: strFilter(大文字の場合) は(小文字の場合) とF同じではありません。したがって、事前宣言を次のように変更します。strfilterf

void strfilter(char a[], char b[], char c);

これに:

void strFilter(char a[], char b[], char c);
于 2012-10-19T00:36:41.937 に答える