2012-07-08 2 views
1

다음은 목표 c에 홀수 결과를 반환합니다.대물 렌즈 c의 scanf가 이상한 결과를 반환합니다.

#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 = "m"이고 위험도 = "ns"인 경우 "m"대신 gen1 = "mns"가 표시됩니다.

이전 버전에서는 정상적으로 작동했습니다. 새로운 미리보기 XCode와 함께 최근에 OS X가 7.8로 업데이트되었습니다. 내가 여기서 잘못하고있는 것이 확실하지 않습니다.

모두 감사합니다,

답변

1

당신은 종료 NUL 문자위한 공간을 확보해야한다 :

"MNS을"있는 GEN1에 대한 가능한 이유는 바로 스택에 할당되는
char risk[3]; 
char gen1[2]; 

위험을 감수하고 scanf는 gen1의 종결 NUL 대화자를 덮어 쓰며 효과적으로 위험과 연결시킵니다.

+0

감사합니다. 당신이 옳았. 그것은 완벽하게 작동했습니다. – Lou

관련 문제