2012-07-08 74 views
1

以下函數返回目標c中的奇數結果。scanf在目標c中返回奇怪的結果

#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 =「m」和risk =「ns」,那麼我得到的是gen1 =「mns」而不是「m」。

在以前的版本中,這工作得很好。 最近更新的OS X到7.8以及新的預覽XCode。 不知道我在這裏做錯了什麼。

感謝所有,

回答

1

你必須騰出空間終止NULL字符:

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

在Gen1中是「MNS」的可能的原因是,立即在堆棧上分配風險之後,scanf將覆蓋gen1的終止NUL字段,將其與風險有效地連接起來。

+0

謝謝你一堆。你是對的。它工作完美。 – Lou 2012-07-08 11:41:00