比较C中的两个字符串?

use*_*438 30 c string comparison

由于未进行比较,此代码无效.为什么?

所有的名字都过去了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);
}
Run Code Online (Sandbox Code Playgroud)

Veg*_*ger 58

要比较两个C字符串(char *),请使用strcmp().0当字符串相等时,函数返回,因此您需要在代码中使用它:

if (strcmp(namet2, nameIt2) != 0)
Run Code Online (Sandbox Code Playgroud)

如果你(错误地)使用

if (namet2 != nameIt2)
Run Code Online (Sandbox Code Playgroud)

你正在比较两个字符串的指针(地址),当你有两个不同的指针时它们是不相等的(在你的情况下总是如此).


Aak*_*ash 12

要比较2个字符串,请使用内置函数strcmp()使用头文件string.h

if(strcmp(a,b)==0)
    printf("Entered strings are equal");
else
    printf("Entered strings are not equal");
Run Code Online (Sandbox Code Playgroud)

或者您可以编写自己的函数,如下所示:

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;
}
Run Code Online (Sandbox Code Playgroud)


sim*_*onc 7

您当前正在比较两个字符串的地址.

使用strcmp比较两个char数组的值

 if (strcmp(namet2, nameIt2) != 0)
Run Code Online (Sandbox Code Playgroud)