禁止指针和整数之间的比较

时间:2013-01-17 18:10:15

标签: c struct structure

struct student
{
    char am[7];/* èá íáé*/
    float final_grade;
    float exam_grade;
    float essay_grade;
};
struct student mathites[1];

do{
    printf("Dwse A.M.:");
    scanf("%s",&mathites[j].am);
} while((mathites[j].am<8120000) || (mathites[j].am>812015));

我看到这样的帖子,但是每个人都要求与“==”进行比较,所以答案是strcmp, 类似的情况呢?

1 个答案:

答案 0 :(得分:1)

something similar for this case?

这个有点不同,因为您正在尝试检查字符串是否在数值范围内。

首先要点几点:


struct student mathites[1];

如果您要声明一个数组,那么您也可以不将其作为数组。

char am[7];/* èá íáé*/

如果要比较的最大值是7个字符&#34; 8120000&#34;那么你希望你的数组大小为8(包括空终止符的空格)

scanf("%s",&mathites[j].am);}

获取字符串时,您不需要使用&运算符,并且应该使用限制器,这样就不会溢出字符串


考虑到这一点,我说代码应该更像:

struct student
{
      char am[8];/* èá íáé*/
      float final_grade;
      float exam_grade;
      float essay_grade;
};

struct student mathites;
do  {
    printf("Dwse A.M.:");
    scanf("%7s",mathites.am);}

现在您的实际问题是,您需要先将字符串转换为数字,然后检查值:

    long str_value = strtol(mathites.am, NULL, 10);
}
while((str_value <8120000) || (str_value >812015));