我有以下代码,我不想使用 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/