我需要帮助解决这个问题。以下是代码:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
struct Person{
char *name[100];
char *nationality[100];
};
void put_values(struct Person *p, const char *name){
strncpy(p->name, name, 500);
}
int main(int argc, char *argv[]){
struct Person *person = malloc(sizeof(struct Person));
put_values(person, argv[1]);
free(person);
return 0;
}
以下是错误信息:
ex17t.c: In function ‘put_values’:
ex17t.c:19:3: warning: passing argument 1 of ‘strncpy’ from incompatible pointer type [enabled by default]
In file included from ex17t.c:4:0:
/usr/include/string.h:131:14: note: expected ‘char * __restrict__’ but argument is of type ‘char **’
非常感谢您能提供任何关于IT技术方面的帮助和建议。感谢您!
char *name[100]
是适当的。但实际上应该使用char name[100]
。如果你要处理200个国籍,那么你可以成为真正的"世界公民"。不过据我所知,全球只有大约180个国家。 - Jonathan Lefflerstrncpy
函数的第三个参数为什么是500
?500
是从哪里来的? - AnT stands with Russia