2014-01-10 17 views
0
#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); 
} 

这是我所拥有的一个样本。以C结构保存数据的功能

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

我试图使用更新的代码,但由于某些原因,而不是39个字符,它打破了第一个字符

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

这个问题表示严重缺乏了解所涉及的技术和超出范围所以。请先参阅适当的初学者教程和相关文档。 – Devolus

回答

1

你的问题是这条线后(返回到主循环):

eq[n].codDipositivo=newVar; 

在C中,你不能分配数组,你需要将它们复制到元素中。请记住,C没有字符串数据类型,字符串只是一个NUL终止的字符数组。幸运的是,C库中有一个函数可以帮助我们,strcpy

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

要获得strcpy你需要添加下面的声明包含在你的代码的顶部:

#include <string.h> 
+0

谢谢。我应该使用gets(newVar)吗? – Pedro

+0

@Pedro codDipositivo是int,所以你可能意思是eq [n] .newVar? – Naytzyrhc

+0

我的错误。但是我需要这个函数的字符串和整数 – Pedro