微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从标准输入读取并将每个单词存储在数组的单独列中

如何解决从标准输入读取并将每个单词存储在数组的单独列中

假设我有一个缓冲区和其他一些用于存储标准输入的指针:

char buffer[256];
char *command[3];

我正在从标准输入读取到缓冲区:

fgets(buffer,BUF_SIZE,stdin);

如果标准输入是 ls -s1,我想要 command[0]="ls"command[1]="-s1"。我也想要command[2]=NULL

对于上下文,我稍后会尝试使用 execvp(),因此我希望所有命令都以 command 分隔,并在末尾使用空字符。

有人能告诉我如何按顺序保存命令数组中的命令吗?

解决方法

试试这段代码:

    #include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <unistd.h>
int main() {
    
    char buffer[256];
    char *command[3];
    int i=0;

    fgets(buffer,256,stdin);
    char *p = strchr(buffer,'\n');
    if (p)  *p = 0;
    char *token=strtok(buffer," ");
    command[0]=strdup(token);
    printf("%s\n",command[0] );
    while(token!=NULL){
        
        token=strtok(NULL," ");
        if(token!=NULL){

            command[++i]=strdup(token);
            printf("%s\n",command[i]);
        }
    }
    command[2]=NULL;
    execvp(command[0],command);
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。