如何用c语言为数组元素赋值?

时间:2014-02-28 16:27:08

标签: c

#include <malloc.h>

void main()
{
   char **variable;
   int count=0

   variable=(char **)malloc(sizeof(char *)*100);

   for(i=0;i<100;i++)
     variable[i]=(char *)malloc(sizeof(char)*11);

   scanf("%s",variable[count]);
}

现在我想为变量[count]中的字符串赋值 例如:如果variable[count]包含字符串“abc”,那么我想将20分配给abc 如果我使用printf(“%d”,abc)那么它应该打印20

2 个答案:

答案 0 :(得分:1)

下面

variable=(char **)malloc(sizeof(char)*100);

你想要分配指针,所以指定正确的指针大小,即char*,如下所示:

variable = malloc(100 * sizeof(char*));

甚至更好:

variable = malloc(100 * sizeof(*variable));

顺便说一句:在C中,不需要投射malloc/calloc/realloc的结果,也不建议使用。


遵循上述规则/建议,此行

variable[i]=(char *)malloc(sizeof(char)*11);

最好看起来像这样

variable[i] = malloc(11 * sizeof(*variable[i]));

最后这个电话很危险:

scanf("%s",variable[count]);

因为它往往会溢出variable[count],所以通过告诉scanf()以多少扫描为最大值来保存它:

scanf("%10s", variable[count]); /* Leave one (10=11-1) spare for the C-"string"'s 0-terminator. */

它是

int main(void)

答案 1 :(得分:0)

variable的类型为char **,然后variable应指向char *的列表,而不是char的列表。

因此,variable=(char **)malloc(sizeof(char)*100);应为variable=(char **)malloc(sizeof(char *)*100);

BTW,malloc()之前的类型转换是不必要的。


  

现在我想为变量[count]中的字符串赋值,例如:如果变量[count]包含字符串“abc”,那么我想将20分配给abc,如果我使用printf(“%d” “,abc)然后它应该打印20

您希望将variable[count]的值视为变量。不幸的是,你做不到。 C是一种静态编程语言,这意味着您无法像在动态编程语言中那样在运行时创建变量。

但是C足够强大,可以让你模拟这个。您可以创建一个查找表,例如

typedef struct var {
    char *name;
    int val; /* or whatever type you want */
} var_t;

var_t variable[num_of_vars]; /* or whatever data structure that you can search */