2012-07-08 54 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