将 argv[1] 复制到数组中

标签 c

我有以下代码,我不想使用 buf[] 的内容,我只想在 buf[] 中包含 argv 内部的内容[1]

我可以将 argv[1] 中的内容分配给数组吗?

我希望这段代码能够分隔存储在 argv[1] 中的参数。 假设我有:

/myprog "A 2 3 4" in.txt out.txt

argv[1] 将是“A 2 3,B 6 7,C 3,D 5”,我想分离该位置的所有内容。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char const *argv[])
{
    char buf[]="a b c,d e f,g h i,e a b";
    int i = 0;
    int c=0;
    char *p = strtok (buf, ",");
    char *array[5];
    char *buf2[20];
    char *vec[20];
    while(p!=NULL)
    {
        array[i++]=p;
        c++;
        p=strtok(NULL,",");
    }
    for(i=0;i<c;i++)
        printf("%s\n",array[i]);   
    for(i=0;i<c;i++)
        *(buf2+i)=*(array+i);
    int pos=0;
    int pa=c;
    c=0;
    for(pos=0;pos<pa;pos++)
    {
        char *q = strtok (buf2[pos], " ");
        i=0;
        while(q!=NULL)
        {
            vec[i++]=q;
            q=strtok(NULL," ");
            c++;
        }    
        for(i=0;i<c;i++)
            printf("%s\n", vec[i]);
        c=0;    
    }    
    return 0;
}

最佳答案

您可以直接标记argv[1]:

char *p = strtok (argv[1], ",");

(当然,前提是它存在:argc > 1)。

关于将 argv[1] 复制到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53681005/

相关文章:

c - 从系统调用刷新浏览器

c - aio_write 的错误

c - 当数组在其他文件中且函数在其他文件中时,查找整数或 float 组的大小?

c - C 嵌入式应用程序中 time() 函数的问题

php - PHP 可以做类似 p($i) 的事情并打印 "$i is 5"—— C 和 Ruby 可以……(也就是说,自动打印出 "$i")

C中的客户端服务器多个连接

c - 如何在编译时向GCC添加自定义库?

c - getchar() 的 getc 文件中是否有等效的 fseek 和 ftell?

c - 在没有内存泄漏的情况下对 char* 进行子字符串化的正确方法

c - 在main()中调用函数时遇到麻烦