C 编程结构

  • 本文关键字:结构 编程 c struct
  • 更新时间 :
  • 英文 :

#include<stdio.h>
#include<string.h>
struct s {
    char ch[20];
    float a;
};
int main()
{
    struct s p[10];
    int i;
    for(i=0;i<10;i++)
    {
        scanf("%s%f",p[i].ch,p[i].a);
    }
}

这段代码有什么问题?

它给出运行时错误。

怎么了?

大多数错误都来自这一行。

scanf("%s%f",p[i].ch,p[i].a);

你应该使用 p[i].a 的地址,并且还要限制用 p[i].ch 写入的字符数。

scanf( "%19s%f", p[i].ch, &p[i].a );

我已经有一段时间没有接触 C 代码了,但它不应该是这样的

scanf("%s%f",p[i].ch,&(p[i].a));

(您必须将变量的内存地址提供给scanf函数。

在行:

scanf("%s%f", p[i].ch, p[i].a);

您正在使用p[i].a作为float*(指针(,而它是一个float。您正在调用未定义的行为。您可能想这样做:

scanf("%s%f", p[i].ch, &p[i].a);

像这样更改代码:

#include <stdio.h>
#include <string.h>
struct s {
    char ch[20];
    float a;
};
int main(){
    struct s p[10];
    int i;
    for(i=0;i<10;i++){
        scanf("%s%f",p[i].ch, &p[i].a);
    }
}

请注意,变量 a 是一种float类型;使用 scanf 时需要传递其内存地址。

我认为问题出在p[i].a参数上;请改用&p[i].a

最新更新