我对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) 直观下面应该看似有效,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) 当我尝试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,所以使用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)