在C上将数据保存为struct的函数

时间:2014-01-10 08:59:54

标签: 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);
}

这是我的样本。

我有一堆scanfs,它会更新屏幕上显示的数据,但现在我想将这些数据传递到一个结构中,并要求提供更多信息。

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

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

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行:

eq[n].codDipositivo=newVar;

在C中,您无法分配数组,您需要将它们复制为元素元素。请记住,C没有字符串数据类型,字符串只是一个以NUL结尾的char数组。幸运的是,C库中有一个功能可以帮助我们strcpy

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

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

#include <string.h>