小编And*_*ndy的帖子

指针和malloc问题

我对C很新,当他们引用字符串时我会遇到数组和指针.我可以要求输入2个数字(整数),然后返回我想要的那个(第一个数字或第二个数字),没有任何问题.但是,当我请求名称并尝试返回它们时,程序在输入第一个名称后崩溃并且不确定原因.

从理论上讲,我希望为名字保留内存,然后将其扩展为包含第二个名称.任何人都能解释为什么这会破裂

谢谢!

#include <stdio.h>
#include <stdlib.h>



void main ()
{
    int NumItems = 0;

    NumItems += 1;
    char* NameList = malloc(sizeof(char[10])*NumItems);
    printf("Please enter name #1: \n");
    scanf("%9s", NameList[0]);
    fpurge(stdin);

    NumItems += 1;
    NameList = realloc(NameList,sizeof(char[10])*NumItems);
    printf("Please enter name #2: \n");
    scanf("%9s", NameList[1]);
    fpurge(stdin);

    printf("The first name is: %s",NameList[0]);
    printf("The second name is: %s",NameList[1]);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

c arrays malloc pointers

3
推荐指数
1
解决办法
1213
查看次数

结构不起作用,得到垃圾输出

直观下面应该看似有效,1)定义一个结构; 2)尝试加载值; 3)打印它们.

此代码在第一个代码之后创建一个额外的换行符,但不会打印出用户输入的任何值.

#define NODES 5

typedef struct node
{
    int val;
    struct node* next;
}
node;

int main(void)
{
    node nodes[NODES];

    for (int i = 0; i < NODES; i++)
    {
        printf("Value of node %i: ", i);
        nodes[i].val = scanf("%i\n", &nodes[i].val); 
    }

    for (int i = 0; i < NODES; i++)
    {
        printf("Value of node %i: is %i \n", i, nodes[i].val);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c struct

3
推荐指数
1
解决办法
64
查看次数

在命名元组中没有返回值

当我尝试print Link.votes我得到<property object at 0x1027b4f18>的时候,我期待为"票"(在下面的例子中100)返回的值.有人可以让我知道我做错了什么吗?

from collections import namedtuple

Link = namedtuple('Link', ['id', 'country_id', 'date', 'votes', 'url'])
Link(0, "US", 111105, 100,"http://www.google.com")
print Link.votes
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
616
查看次数

为什么我不能使用malloc来设置大于所需数组的数组?

我来自Python,所以使用malloc对我来说是新的.直观地说,下面应该有效,但有语法问题.在我的第一行中,我想将数组大小设置为最大8个整数.在第二行,我想添加这4个整数.这一行仅作为示例,在生产中我将有用户输入最多8位数字.当我去编译(clang)时,我得到size of array has non-integer type 'void *' 如果我注释掉第一行并用第二行初始化(并添加int类型),代码就可以了.所以我显然错误地设置了大小.有任何想法吗?

int main(void)

{

    int mult_digits[malloc(8 * sizeof(int))];
    mult_digits[] = {1,2,3,4};
    int size_mult = sizeof mult_digits / sizeof *mult_digits;
    printf("Size of the array is %d\n", size_mult);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c arrays malloc

-1
推荐指数
1
解决办法
772
查看次数

标签 统计

c ×3

arrays ×2

malloc ×2

pointers ×1

python ×1

struct ×1