関数gets()を使用して、ユーザーから文字列入力を取得しています。次に、その文字列をchar配列char transdestmp [DESMAX]に格納します。DESMAXは31です。variable_nameが30文字より大きい場合は、ユーザーに別の文字列を借りるように依頼します。それ以外の場合は、strcpy()を使用して文字列を2次元配列char --acctdes[31][20]にコピーします。
accttitleがtransdestmp[DESMAX]を受信します
void accttitle(char descr[DESMAX])
{
printf("\nEnter title for new account %d: ", transinpt);
gets(descr);
while(strlen(descr)>DESMAX){
printf(" **Title entered is longer than 30 characters\n");
printf(" Please reenter : ");
gets(descr);
}
strcpy(acctdes[transcntr],descr);
printf("---->vacctdes[transcntr]: %s\n", acctdes[transcntr]);
printf("---->vacctdes[transcntr-1]: %s\n", acctdes[transcntr-1]);
}
何らかの理由で、長い文字列を入力してから別の文字列を入力すると、2番目の文字列の一部であるacctdes [1]が、acctdes[0]に格納されている他の文字列を上書きします。
例えば、
最初の入力:acctdes [0]="これは長い文字列です"
できます...
2番目の入力acctdes[1]= "monkey"
できます...
しかし、acctdes [0]を出力すると、acctdes[0]はacctdes[1]からの値の一部を持っているようです...出力のように-これは長い僧侶です...
さらに詳しい情報が必要な場合はお知らせください。前もって感謝します。