-3
モールスコードを出力するCプログラムを作成したいが、後で私が使用できるように、Yの値を返すのに問題があるその値をYと比較して別の基本文字列と比較して答えを表示します。私も疑問があります。あなたが答えを知っているかどうかを明確にしてください。長さパラメータをグローバルにすると、main関数からの入力長の値はそのパラメータに格納されますか?おかげで事前にC:関数から数値の配列を返す方法
int length;
int *callfunction(int x){
int temp=x;
int Y;
static int r[1000];
if(temp==0 || temp==1){
Y=1; // for a
}
else if(temp==2 || temp==3){
Y=2; //for b
}
else if(temp==4 || temp==5){
Y=3; //for c
}
else if(temp==6 || temp==7){
Y=4; // for d
}
for(int i =0;i<length;i++){
r[i]=Y;
}
return r;
}
int main(){
int i,j,k,*p[1000];
char string[100];
char string1[]={'A','a','B','b','C','c','D','d'};
const char* string2[]={"•-","-•••", "-•-•","-••"};
printf("Enter a string:");
gets(string);
printf("The entered string is:%s\n",string);
length= strlen(string);
printf("Length=%d\n",length);
for(j=0;j<length;j++){
for(i=0;i<8;i++)
if(string1[i]==string[j]){
p[i] = callfunction(i);
}
}
for(i=0;i<length;i++){
printf("%d",p[i]); //I want display the Y number here
printf("\n");
}
getchar();
return 0;
}
プログラムがエラーなしで実行しますが、私は実行が行われているYの実際の値を得ることはありません、
本当に配列を返すことはできません。 –
静的配列上の壊れたポインタを返すことができます。それはうまくいきます(しかし、私はそうしません:)) –
関数内のバッファは静的で、すべての 'p [i]'によって参照される* 1つのバッファしかないので、考慮してください。 '%d 'ここで' printf( "%d"、p [i]); 'でポインタを印字しようとしたので意味のある印字は得られません。配列を印刷するには、配列を反復処理する必要があります。 – StoryTeller