字符串 C 上的 getopt()

getopt() on a String C

如何使用 C 在字符串上实现类似 getopt() 的函数?

我正在申请这个

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <strings.h>
#include <fcntl.h>


int main(int argc, char **argv){

     int ch,fd;
     char *ip;
     char *port;
     char *user;
     char message[100]; 
     message = "_connect -i 127.0.0.1 -p 1234 -u hello1";

     while ((ch = getopt(argc, argv, "i:p:u:")) != -1) {
             switch (ch) {
             case 'i':
                     if ((fd = open(optarg, O_RDONLY, 0)) < 0) {
                             printf("my ip is: %s\n", optarg);

                             //ip = optarg;
                     }
                     break;

            case 'p':
                    if ((fd = open(optarg, O_RDONLY, 0)) < 0) {
                             printf("my port number is: %s\n", optarg);
                             //port = optarg;

                     }
                     break;

            case 'u':
                    if ((fd = open(optarg, O_RDONLY, 0)) < 0) {
                             printf("my name is: %s\n", optarg);
                             //user = optarg;

                     }
                     break;
             default:break;
             }
     }
     argc -= optind;
     argv += optind;
     return 0;
  }

我需要使消息完全充当参数和 getopt 函数以接收分隔值

首先使用strtok(或strtok_r)将您的C 字符串转换为字符串数组。然后将其传递给 getoptgetopt 只使用 argcargv 因为那是你传递的。

如果您需要关心自己的引用(考虑是否

hello "foo bar" baz

具有三个或两个参数),那么您可能需要查看 wordexp, or if you are using glib, g-shell-parse-argv