【问题标题】:Assigning values to chars in structs - c为结构中的字符赋值 - c
【发布时间】:2010-04-21 01:21:36
【问题描述】:

我一直无法让用户在结构中输入单词。 我正在使用的struct 如下

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

如果有人能指出我如何做到这一点,或者至少指出我正确的方向,那就太好了。 谢谢

【问题讨论】:

  • 您是否排除了用 C++ 编写的可能性?这看起来像是一种 IT 应用程序。
  • @Potatoswatter:我们能否避免讨论使用哪种语言而不是问题的一部分?

标签: c struct


【解决方案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”成员中。

【讨论】:

  • 结构体是学校数据库,所以class_num是学校班级的代码
【解决方案2】:

在 C 中,字符只是一种整数,除了它们可以是有符号的或无符号的(默认情况下,int 是有符号的)。所以 class_num[i] 是一个单字节整数。有很多方法可以进行输入,这取决于它应该是一个字符串还是一个四字节代码或其他什么。正如乔恩瓦特所说,您还必须管理其他领域的内存。您可能会结合 read 或 fread 查找 scanf 或 strtod 或 strtol。除非您有更复杂的输入,例如数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-30
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2021-04-15
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多