1

以下は、ObjectiveCで奇妙な結果を返します。

#import <Foundation/Foundation.h>
#import <math.h>
#import <stdio.h>
#import <string.h>

char risk[2];
char gen1[1];
printf("Enter gender: ");
scanf("%s",gen1);
printf("Enter risk: ");
scanf("%s",risk);

そして、gen1として、gen1だけでなく、gen1+リスクの結果を取得します。言い換えると、gen1="m"およびrisk="ns"の場合、単に"m"ではなくgen1="mns"を取得します。

以前のバージョンでは、これは問題なく機能しました。最近、新しいプレビューXCodeとともにOSXを7.8に更新しました。ここで何が間違っているのかわかりません。

皆さんありがとう、

ルー

4

1 に答える 1

1

終端の NUL 文字のためのスペースを確保する必要があります:

char risk[3];
char gen1[2];

gen1 が「mns」である理由として考えられるのは、risk の直後にスタックに割り当てられ、scanf が gen1 の終端の NUL 文字を上書きし、それを実質的に risk と連結することです。

于 2012-07-08T11:17:12.417 に答える