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

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

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

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

我哪里错了?

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

4

2 回答 2

1

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

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

但您也可以通过使用malloc()et al(或使用strdup())进行动态内存分配来实现。

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

于 2012-10-30T00:35:50.560 回答
1

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

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

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

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

于 2012-10-30T00:36:04.100 回答