我试图将我收到的数组作为参数拆分为使用strtok()
的函数,它根本没有按预期工作。
例如,我收到此字符串:"ls -l"
,我只得到"ls"
。
此外,我想将令牌存储到一个字符串数组中。
以下是我到目前为止所做的事情:
int mysystem(char *s) {
int i;
char *tok , *aux;
int conta = 0;
int pid, status;
int j = 0;
tok = strtok(s , " ");
while (tok != NULL) {
tok = strtok(NULL, s);
conta++;
}
char *store[conta];
i = 0;
aux = strtok(s ," ");
while (aux != NULL) {
store[i] = aux;
aux = strtok(NULL, s);
i++;
}
pid = fork();
if (pid == 0)
execvp(store[0], store);
while (j != conta) {
wait (&status);
j++;
}
return 0;
}
这是我将字符串传递给我的函数的主要内容:
int main(int args, char **arg) {
int i;
int s;
int f = 0;
if (args >= 2) {
int length = 0;
for (i = 1; i < args; ++i) {
length += strlen(arg[i]);
}
char *output = (char*)malloc(length + 1);
char *dest = output;
i = 1;
while (i < args) {
dest = strcat (dest,arg[i]);
i++;
if (i < args) {
dest = strcat (dest," ");
}
}
dest = strcat(dest, "\0");
s = mysystem(dest);
free(output);
return s;
}
}
答案 0 :(得分:1)
<h1 class="jumbotron"><img class="logo" src="logo2.jpg"/>My website</h1>
<ul>
<li><a style="border-top 1px solid #bbb" class="active" href="index.html">Home</a></li>
<li><a href="news.html">News</a></li>
<li><a href="contact.html">Contact</a></li>
<li><a href="about.html">About</a></li>
</ul>
修改字符串,因此您无法在同一个字符串上运行两次。 strtok
已转换为由s
个字符分隔的一系列字符串。改为使用足够长的数组&#34;并且只需要经过一次。