1

以下返回目标 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 + risk 而不仅仅是 gen1。换句话说,如果 gen1 = "m" 和 risk = "ns" 那么我得到 gen1 = "mns" 而不仅仅是 "m"。

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

谢谢大家,

4

1 回答 1

1

您必须为终止 NUL 字符腾出空间:

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

gen1 为“mns”的可能原因是在风险之后立即分配在堆栈上,并且 scanf 覆盖了 gen1 的终止 NUL 字符,有效地将其与风险连接起来。

于 2012-07-08T11:17:12.417 回答