int main(int argc, char *argv[]) {
int i;
for(i = 0; i < argc; i++)
printf("arg %d: %s\n", i, argv[i]);
return 0;
}
假设我在命令行中运行程序
./program mom cat dad
argv[1]
等于“妈妈”
如何获取字符数组argv[1]
以将它们单独放入链表?
int main(int argc, char *argv[]) {
int i;
for(i = 0; i < argc; i++)
printf("arg %d: %s\n", i, argv[i]);
return 0;
}
假设我在命令行中运行程序
./program mom cat dad
argv[1]
等于“妈妈”
如何获取字符数组argv[1]
以将它们单独放入链表?
argv[1]
是您要查找的数组。例如,这意味着argv[1][0]
是第一个字符。
在 C 中,字符串始终只是char
数组,因此argv[1]
已经是字符数组。例如,您可以这样做:
for (int i = 0; i < strlen(argv[1]); i++) {
printf("Character %d = %c\n", i, argv[1][i]);
}
已经有大量关于在 C 中实现链表的资源(例如:here),所以我建议您使用这些信息试一试,如果遇到困难,请返回。祝你好运!
除了这里已经给出的答案,值得一提的是,您通常会将字符串复制到您的列表中。您可以使用strdup
(defined in string.h
) 复制字符串。例如:
listnode->value = strdup(argv[1]);
这意味着您的列表现在拥有一小块包含该复制字符串的内存,因此它负责free
在释放列表节点时调用该指针。
但是,我应该提到您可以修改参数数组。因此,如果您的列表仅对提供的参数进行操作,您不一定需要复制它们(除非您想重新分配内存),即使您打算修改字符串数据。
如果您只是在每个列表节点中存储一个字符值,则没有这样的要求。你会简单地有一个这样的列表结构:
struct node {
char value;
struct node *next;
};