目标c中的scanf返回奇怪的结果

时间:2012-07-08 11:12:59

标签: objective-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。换句话说,如果gen1 =“m”且risk =“ns”,那么我得到gen1 =“mns”而不是“m”。

在之前的版本中,这工作得很好。 最近更新了OS X到7.8以及新的预览XCode。 不知道我在这里做错了什么。

全心全意,

1 个答案:

答案 0 :(得分:1)

你必须为终止NUL角色腾出空间:

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

gen1为“mns”的可能原因是在风险之后立即在堆栈上分配,而scanf会覆盖gen1的终止NUL聊天,有效地将其与风险联系起来。