2010-04-21 96 views
0

我一直在困扰着我的头脑,允许用户在结构体中输入单词。 我使用的struct低于为结构体中的字符赋值 - c

struct class 
{ 
    char class_num[4]; 
    char *class_name; 
} 

如果任何人都可以点我如何做到这一点,或至少指向我在贵方觉得伟大正确的方向。 谢谢

+0

你排除了用C++编写吗?这看起来像一种IT应用程序。 – Potatoswatter 2010-04-21 01:22:45

+0

@Patatoswatter:当我们不是问题的一部分时,我们能否避免讨论使用哪种语言? – 2010-04-21 03:25:10

回答

1

什么是“class_num”应该是什么?

通常,您必须明确地管理字符串内存。函数strdup()可能会有所帮助。 考虑:

struct class cls; 
char buf[256] = {0}; 
puts("Name?"); 
fgets(buf, 255, stdin); 
cls.class_name = strdup(buf); 
//you need to free "cls.class_name" after its use is over 

这将让用户输入一个字符串,最多255个字符,并且将存储的字符串(副本)的结构实例“CLS”的“CLASS_NAME”成员。

+0

结构是用于学校数据库的,所以class_num是学校类的代码 – user321853 2010-04-21 01:28:43

0

在C字符只是一种整数,除了它们可以是有符号或无符号的(int是默认签名的)。所以class_num [i]是一个字节的整数。有很多方法可以做输入,它取决于它应该是一个字符串还是一个四字节代码或其他。正如Jon瓦特所说,你还必须为其他领域的内存管理。您可能会查看scanf或strtod或strtol与read或fread结合使用。除非像数据库那样有更复杂的输入。