2016-10-16 4 views
-1

C 언어로 재고 계산기를 만들고 싶습니다. 아직 진행 중입니다. Microsoft Visual Studio 2015를 사용하여 만듭니다.문자열이 작동하지 않는 경우

문자열 (예 : "refrigerator")을 입력하고 printf을 사용하여 인쇄하면 컴퓨터에서 인쇄 할 수 있습니다. 그러나 그 문자열을 if에 넣으면 계속할 수 없습니다. 에서 진행 정지 : 그 후

scanf_s("%s",stock1,sizeof(stock1)); 
fflush(stdin); 

내가 입력 "refrigerator"if 문은 나오고 있지 않은 경우. 당신이 C 언어를 사용하고 있기 때문에

int fan, refrigerator, lpg; 
    int menu; 
    char stock1[15], stock2[15]; 
    int total1, total2, totalstock; 
    int check; 


    printf("Type the item that you want to add\n"); 
    scanf_s("%s",stock1, sizeof(stock1)); 
    fflush(stdin); 

    if (stock1 == "refrigerator") 
    { 
     printf("How many item would you like to add?\n"); 
     scanf_s("%d", &total1); 
     fflush(stdin); 


    } 

    getchar(); 
    return 0; 
} 
+3

'strcmp'를 사용하십시오. '=='를 사용하여 C 문자열을 비교할 수 없습니다. – HolyBlackCat

+0

:'scanf' 계열의 모든 함수에서 리턴 값을 확인하십시오. 만약 당신이 그렇게하지 않는다면, 좀 더 안전한'scanf_s' 패밀리를 사용하는 것은 거의 요지가 없습니다. '(scanf_s ("% d", & total1)! = 1) {/ * some error handling * /}' –

+0

'fflush stdin);'정의되지 않은 동작을 호출합니다. 입력 스트림을'fflush '할 수 없습니다. – Olaf

답변

1

, 당신은 strcmp 기능을 사용해야합니다 다음은 내 코드입니다. strcmp 두 문자열이 모두 같은 값일 경우 함수는 0 값을 반환합니다. 이런 식 사용

if(strcmp(string,"refrigerator") == 0) 
{ 
    /*string is equal to "refrigerator"*/ 

} else { 

    /*string is not equal to "refrigerator"*/ 
} 

는 C에서 string.h

1

당신이 문자열을 비교하기 위해 strcmp 기능을 사용해야 포함하는 것을 잊지 마십시오을. 예를 들어, 경우에 당신은 당신의 문자열을 비교하려는 다음과 같은 방식으로 "냉장고"로 :

사용할 수 꽤 몇 가지 문자열 함수가 있습니다
if(strcmp(stock1, "refrigerator") == 0) 
{ 
    /* etc */ 
} 

- 당신은 아마 그들과 함께 익숙해 져야가.

행운을 빈다.

1

귀하의 문제는 문자 배열과 문자열 리터럴을 비교하는 잘못된 방법은 당신이

stock1=="refrigerator" 

strcmp 수익의

if(strcmp(stock,"refrigerator")==0) 

대신 사용해야 char 배열 리터럴 문자열을 비교하는 것입니다 문자열 1이 문자열 2와 같으면 0, 문자열 1이 문자열 2보다 크면> 0, 그리고 문자열 1이 문자열 2보다 작 으면 < 0.

+0

사실이 아니므로 [man page] (https://msdn.microsoft.com/en-us/library/e0z9k731.aspx)를 참조하십시오. –