【问题标题】:Forbids comparison between pointer and integer [closed]禁止指针和整数之间的比较[关闭]
【发布时间】:2013-01-17 18:10:14
【问题描述】:
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, 这种情况类似吗?

【问题讨论】:

  • 我不知道你在问什么。
  • 如果您提供有关您正在尝试做什么以及您认为自己在做什么的背景信息将会很有帮助。
  • 我希望 A.M 可以作为一个数字,介于 8120000 和 812015 之间,所以,首先我必须更改 char am[7];到 int am[7];
  • @Mikel - 输入数字?然后你只需要int am; 并更改scanf 格式。如果您希望将其作为字符串,则将其 更改 为以下答案的数字。
  • 小于 812 万或大于 812k。不都是数字吗?

标签: c struct structure


【解决方案1】:

something similar for this case?

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

先说几点:


struct student mathites[1];

如果你要声明一个数组,你最好不要把它变成一个数组。

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

如果您要比较的最大值是 7 个字符“8120000”,那么您希望数组大小为 8(包括空终止符的空间)

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

获取字符串时不需要使用&amp; 运算符,应该使用限制器以免字符串溢出


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

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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    相关资源
    最近更新 更多