将字符串与if中的ifnent进行比较

时间:2018-03-28 07:55:23

标签: c if-statement struct string-comparison

我是c编程的初学者,而且我已经到了一个点(非常荒谬),我被困在两个字符串之间的if语句中。

在这个程序中,我希望用户输入保存在结构中的学生的课程,然后它应该搜索具有相同课程的学生并将其打印在屏幕上。

我的问题出在if statement,出于某种原因(内存地址可能?)当我输入相同的字符时,它会看到它们用于不同的字符串。 代码只是"跳过" if部分。虽然它在我声明if(record[0].lesson!="maths")时起作用。

我尝试过很多事情,例如strcmp

if (record[0].lesson==record[1].lesson)

if(record[0].lesson=="maths") ......等等。

如果你能帮助我,我将非常感激。非常感谢你。

# include <stdio.h>
# include <string.h>
typedef struct student{
    char name[10];
    char lesson[10];
}students;

int main()
{
    students record[10];
    char less;
    strcpy(record[0].name,"James");
    strcpy(record[0].lesson,"maths");
    strcpy(record[1].name,"John");
    strcpy(record[1].lesson,"maths");
    strcpy(record[2].name,"Harry");
    strcpy(record[2].lesson,"C/C++");
    printf("Give Lesson\n");
    scanf("%s",less);
    for(int i=0;i<3;i++){
    if(less==record[i].lesson)
    printf("%s\n",record[i].name);}


    return 0;
}

1 个答案:

答案 0 :(得分:1)

你想要这个:

  • 更好的格式化
  • less正确声明为char less[10];
  • 使用strcmp进行字符串比较而不是==
#include <stdio.h>
#include <string.h>

typedef struct student{
    char name[10];
    char lesson[10];
} students;

int main()
{
    students record[10];
    char less[10];
    strcpy(record[0].name, "James");
    strcpy(record[0].lesson, "maths");
    strcpy(record[1].name, "John");
    strcpy(record[1].lesson, "maths");
    strcpy(record[2].name, "Harry");
    strcpy(record[2].lesson, "C/C++");
    printf("Give Lesson\n");
    scanf("%s", less);

    for (int i = 0; i < 3; i++) {
      if (strcmp(less, record[i].lesson) == 0)
      printf("%s\n",record[i].name);
    }

    return 0;
}

仍有很大的改进空间。