我将struct Person类型的数据传递给链表,因此每个节点的数据指针指向一个结构Person.
struct Person {
char name[16];
char text[24];
};
Run Code Online (Sandbox Code Playgroud)
我试图遍历列表并通过调用打印每个节点中的名称/文本
traverse(&list, &print);
Run Code Online (Sandbox Code Playgroud)
遍历的原型是:
void traverseList(struct List *list, void (*f)(void *));
Run Code Online (Sandbox Code Playgroud)
列表定义为:
struct List {
struct Node *head;
};
Run Code Online (Sandbox Code Playgroud)
我的print函数接受void*数据:
print(void *data) { .... }
Run Code Online (Sandbox Code Playgroud)
我知道我必须将数据转换为struct Person,对吗?
struct Person *person = (struct Person *)data;
printf("%s", person->name);
Run Code Online (Sandbox Code Playgroud)
我知道这是不够的,因为我得到了"从不兼容的指针类型初始化"警告.在这种情况下,如何成功投出空白*?谢谢.
我想解析一个字符串并对字符串的最后一个字符进行一些检查.例如:
char *name = "angela";
int i;
for(i = 0; i <= strlen(name); i++) {
if(name[i] == 'a' && i == strlen(name)) {
*do something here*;
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,但没有任何反应.为什么这不起作用?
我想知道 C 中的 toupper() 函数是如何工作的。我正在下面的代码中尝试它,但我肯定做错了什么。代码可以编译,但传递给 toupper() 的参数没有大写...
char **copyArgs(int argc, char **argv) {
char **a = malloc(sizeof(char *) * (argc));
int i;
for(i = 0; i < argc; i++) {
int size = strlen(argv[i]);
a[i] = malloc(sizeof(char) * (size + 1));
strcpy(a[i], argv[i]);
a[i] = toupper(a[i]);
}
return a;
}
Run Code Online (Sandbox Code Playgroud)
如果我用“一二”测试它,结果是“一二”,而不是“一二”。任何建议表示赞赏。