c - 在 C 上将数据保存为结构体的函数

标签 c struct

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

 typedef struct equipamento { 
    int codDipositivo;
    char nomeEquipamento[40];
    char newVar[50];
}Equipamento;

insert(int n, int cat, Equipamento eq[])
{
    int codigo;
    char newVar[40];
    printf("\nNew Var: ");  
    scanf("%s",&newVar);    
    eq[n].codDipositivo=newVar;
}

main()
{
    Equipamento equipamento[MAX_EQ_DSP];


    ...a bunch of scanfs 
    scanf("%d",&n);
    scanf("%d",&pr);


    insert(n, pr, equipamento);
}

这是我所拥有的样本。

ma​​in上,我有一堆 scanfs,它们将更新屏幕上显示的数据,但现在我想将该数据传递到结构中并请求其他信息。

我正在尝试使用更新后的代码,但由于某种原因,它在第一个字符之后崩溃(返回到主循环),而不是 39 个字符

printf("\nNome do Equipamento: "); 
gets(nome);
strcpy(eq[n].nomeEquipamento, nome);

最佳答案

你的问题是这一行:

eq[n].codDipositivo=newVar;

在C中,你不能给数组赋值,你需要逐个元素地复制它们。请记住,C 没有字符串数据类型,字符串只是一个以 NUL 结尾的 char 数组。幸运的是,C 库中有一个函数可以帮助我们,strcpy

strcpy(eq[n].codDipositivo, newVar);

要获取 strcpy 的声明,您需要在代码顶部添加以下包含内容:

#include <string.h>

关于c - 在 C 上将数据保存为结构体的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21039899/

相关文章:

struct - 有序结构中的最后一个键

c: 函数 waitpid 是如何工作的?

c结构队列错误: "array type has incomplete element type"

C++ 子结构与父结构具有不同的变量名称

c - strcpy:在 union 中使用 char** 变量作为参数

c - 双指针和结构

c - 运算符结合性、优先级

c - 按名称对 c 处的复杂结构进行排序

c++ - 如何将 "char"转换为 "std::string"?

c++ - 二叉搜索树中是否需要结构