0
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]以将它们单独放入链表?

4

3 回答 3

2

argv[1]是您要查找的数组。例如,这意味着argv[1][0]是第一个字符。

于 2013-02-28T20:45:40.377 回答
1

在 C 中,字符串始终只是char数组,因此argv[1]已经是字符数组。例如,您可以这样做:

for (int i = 0; i < strlen(argv[1]); i++) {
    printf("Character %d = %c\n", i, argv[1][i]);
}

已经有大量关于在 C 中实现链表的资源(例如:here),所以我建议您使用这些信息试一试,如果遇到困难,请返回。祝你好运!

于 2013-02-28T20:46:57.417 回答
0

除了这里已经给出的答案,值得一提的是,您通常会将字符串复制到您的列表中。您可以使用strdup(defined in string.h) 复制字符串。例如:

listnode->value = strdup(argv[1]);

这意味着您的列表现在拥有一小块包含该复制字符串的内存,因此它负责free在释放列表节点时调用该指针。

但是,我应该提到您可以修改参数数组。因此,如果您的列表仅对提供的​​参数进行操作,您不一定需要复制它们(除非您想重新分配内存),即使您打算修改字符串数据。

如果您只是在每个列表节点中存储一个字符值,则没有这样的要求。你会简单地有一个这样的列表结构:

struct node {
    char value;
    struct node *next;
};
于 2013-02-28T21:01:19.050 回答