首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复c中与结构相关的错误?

如何修复c中与结构相关的错误?
EN

Stack Overflow用户
提问于 2022-03-23 16:02:25
回答 1查看 65关注 0票数 0

我用c-写了这个代码:

代码语言:javascript
复制
#include <stdio.h>
#include <conio.h>

struct chemical_elements {
    char element_name[100];
    char element_symbol[10];
    int atomic_number;
    int atomic_mass;
};

void main() {
    int i;
    chemical_elements elements[118];
    char elements_name[120][20]={" ","Hydrogen","Helium","Lithium","Beryllium","Boron","Carbon","Nitrogen","Oxygen","Fluorine","Neon","Sodium","Magnesium","Aluminum","Silicon","Phosphorus","Sulfur","Chlorine","Argon","Potassium","Calcium","Scandium","Titanium","Vanadium","Chromium","Manganese","Iron","Cobalt","Nickel","Copper","Zinc","Gallium","Germanium","Arsenic","Selenium","Bromine","Krypton","Rubidium","Strontium","Yttrium","Zirconium","Niobium","Molybdenum","Technetium","Ruthenium","Rhodium","Palladium","Silver","Cadmium","Indium","Tin","Antimony","Tellurium","Iodine","Xenon","Cesium","Barium","Lanthanum","Cerium","Praseodymium","Neodymium","Promethium","Samarium","Europium","Gadolinium","Terbium","Dysprosium","Holmium","Erbium","Thulium","Ytterbium","Lutetium","Hafnium","Tantalum","Tungsten","Rhenium","Osmium","Iridium","Platinum","Gold","Mercury","Thallium","Lead","Bismuth","Polonium","Astatine","Radon","Francium","Radium","Actinium","Thorium","Protactinium","Uranium","Neptunium","Plutonium","Americium","Curium","Berkelium","Californium","Einsteinium","Fermium","Mendelevium","Nobelium","Lawrencium","Rutherfordium","Dubnium","Seaborgium","Bohrium","Hassium","Meitnerium","Darmstadtium","Roentgenium","Copernicium","Nihonium","Flerovium","Moscovium","Livermorium","Tennessine","Oganesson", " "};
    for (i=1;i<=118;i++) {
        elements[i].atomic_number=i;
        elements[i].element_name=elements_name[i];
    }       
    getch();
}

我做它是为了告诉元素电子配置,但是当我在编写代码之间签入时,在编译它时,我发现它给出了以下错误-:

代码语言:javascript
复制
new5.c(13): error C2065: 'chemical_elements': undeclared identifier
new5.c(13): error C2146: syntax error: missing ';' before identifier 'elements'
new5.c(13): error C2065: 'elements': undeclared identifier
new5.c(13): error C2109: subscript requires array or pointer type
new5.c(16): error C2065: 'elements': undeclared identifier
new5.c(16): error C2109: subscript requires array or pointer type
new5.c(17): error C2065: 'elements': undeclared identifier
new5.c(17): error C2109: subscript requires array or pointer type

我有什么办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 16:50:01

与其在名称和原子序号中复制,不如用这些值初始化数组。

代码语言:javascript
复制
struct chemical_elements {
    const char *element_name;
    const char *element_symbol;
    int atomic_number;
    double atomic_mass;
};

const struct chemical_elements elements[] = {
  { "Hydrogen", "H",  1, 1.0079 }, 
  { "Helium",   "He", 2, 4.0026 },
  ...
  { "Oganesson", "Og", 118, 294 },
}

const size_t chemical_elements_n = sizeof chemical_elements / chemical_elements[0];

我看不出.atomic_number成员有什么理由。下面考虑一下,并使用数组索引作为原子序数。

代码语言:javascript
复制
struct chemical_elements_alt {
    const char *element_name;
    const char *element_symbol;
    double atomic_mass;
};

const struct chemical_elements_alt elements[] = {
  { "Neutron", "Nu",  1.00867 }, 
  { "Hydrogen", "H", 1.0079 }, 
  { "Helium",   "He", 4.0026 },
  ...
  { "Oganesson", "Og",  294 },
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71590409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档