我想在C中创建一个字符串和一个整数的数组结构

时间:2012-10-30 00:31:35

标签: c arrays string struct

struct arr 
{char * str;
 int ctr;
}m_arr[100];

我面临的问题是每当我在string和int字段中插入一个值并遍历数组进行打印时,int字段显示正确,但我的字符串字段始终是我更新的最后一个字段。

例如:我传递的值是{'t-1',2} and {'t-2',5}

当我使用for循环显示数组元素时,我得到{'t-2',2}{'t-2',5}

我哪里错了?

我首先尝试使用队列并遇到同样的问题。所以使用数组实现但同样的问题。请帮忙。很紧急。

2 个答案:

答案 0 :(得分:1)

你必须在某处为字符串分配空间。在结构中最容易做到这一点:

struct arr 
{
    char str[32];
    int  ctr;
} m_arr[100];

但你也可以通过动态内存分配malloc()等(或使用strdup())来实现。

使用显示的结构,您可以使用m_arr[i].str或等效内容将您阅读的字符串复制到strcpy()。请记住确保字符串对于数据来说不会太长。 strdup()的一个优点是动态分配是字符串总是足够大。

答案 1 :(得分:1)

这里的问题是你实际上并没有将字符串存储在那里。你只是保持一个指向它的指针。我假设您实际打印的值是您用来填充它的一些临时字符串。

最简单的修复方法是使用字符串而不是指针:

struct arr
{
    char str[10]; // able to hold up to 9 characters + terminating \0
    int ctr;
} m_arr[100];

要实际存储您必须复制的字符串,例如使用strcpy()sprintf()