C에서 두 문자열을 비교하는 것?
비교가 안되고 있어서 코드가 작동하지 않습니다. 왜죠?
모든 이름들이 지난다.if
.
printf("Enter Product: \n");
scanf("%s", &nameIt2);
printf("Enter Description: \n");
scanf("%s", &descriptionI);
printf("Enter Quantity: \n");
scanf("%d", &qtyI);
printf("Enter Order Quantity: \n");
scanf("%s", &ordqtyI);
while (fscanf(fp4, "%s %s %d %s\n", &namet2, &description2, &qty2, &ordqty2) != EOF){
if(namet2 != nameIt2)
fprintf(fpt2, "%s %s %d %s\n", &namet2, &description2, qty2, &ordqty2);
}
두 개의 C 문자열을 비교하는 방법(char *
), 을 사용합니다.함수가 반환됩니다.0
문자열이 동일한 경우 코드에서 이를 사용해야 합니다.
if (strcmp(namet2, nameIt2) != 0)
사용하시는 경우
if (namet2 != nameIt2)
두 문자열의 포인터(addresses)를 비교하는 것입니다. 두 개의 다른 포인터가 있을 때는 동일하지 않습니다(사용자 상황에서는 항상 해당됨).
두 문자열을 비교하려면 내장 함수를 사용합니다.strcmp()
헤더 파일 사용string.h
if(strcmp(a,b)==0)
printf("Entered strings are equal");
else
printf("Entered strings are not equal");
또는 다음과 같이 자신의 함수를 작성할 수 있습니다.
int string_compare(char str1[], char str2[])
{
int ctr=0;
while(str1[ctr]==str2[ctr])
{
if(str1[ctr]=='\0'||str2[ctr]=='\0')
break;
ctr++;
}
if(str1[ctr]=='\0' && str2[ctr]=='\0')
return 0;
else
return -1;
}
현재 두 문자열의 주소를 비교하고 있습니다.
strcmp를 사용하여 두 문자 배열의 값을 비교합니다.
if (strcmp(namet2, nameIt2) != 0)
여기서 포인터를 비교하려고 하는 것이지, 가리키는 내용(즉, 당신의 문자)을 비교하려고 하는 것은 아닙니다.
둘 중 하나를 사용해야 합니다.memcmp
아니면str{,n}cmp
내용을 비교하기 위해서 입니다.
사용하셔야 합니다.strcmp
:
strcmp(namet2, nameIt2)
배열의 이름은 시작 주소를 나타냅니다.둘다 시작주소namet2
그리고.nameIt2
다릅니다.따라서 ()와 같음==
) 오퍼레이터는 주소가 동일한지 여부를 확인합니다.두 문자열을 비교할 때 더 좋은 방법은strcmp()
, 혹은 루프를 이용하여 캐릭터별로 비교할 수 있습니다.
질문의 Why에 대한 답변:
등식 연산자는 다음과 같은 단순 변수 유형에만 적용할 수 있기 때문입니다.float
s,int
s, 또는char
s, 구조나 배열과 같은 더 정교한 유형은 아닙니다.두 문자열이 동일한지 확인하려면 두 문자열을 문자별로 명시적으로 비교해야 합니다.
if(strcmp(sr1,str2)) // this returns 0 if strings r equal
flag=0;
else flag=1; // then last check the variable flag value and print the message
OR
char str1[20],str2[20];
printf("enter first str > ");
gets(str1);
printf("enter second str > ");
gets(str2);
for(int i=0;str1[i]!='\0';i++)
{
if(str[i]==str2[i])
flag=0;
else {flag=1; break;}
}
//check the value of flag if it is 0 then strings r equal simple :)
언급URL : https://stackoverflow.com/questions/14232990/comparing-two-strings-in-c
'source' 카테고리의 다른 글
부트스트랩 3의 필수 필드에 별표 추가 (0) | 2023.10.17 |
---|---|
도커 구성, net:host에서 컨테이너 실행 (0) | 2023.10.17 |
z-index가 position absolute에서 작동하지 않음 (0) | 2023.10.17 |
Dectrine DBAL - WHERE IN 배열에 추가 매개변수 포함 (0) | 2023.10.17 |
자바스크립트로 작성된 C 인터프리터 (0) | 2023.10.17 |