C:如何将用户输入限制为 2 个用空格分隔的参数



我正在尝试构建一个目录树。

如何将用户输入限制为 1-2 个以空格分隔的字符串?

用户输入示例:

mkdir 目录 1(2 个字符串:一个命令一个参数)

ls(1 个字符串:一个命令)

一些想法:

标记用户输入和

用于检查新字符串的空格分隔

OR 用于遍历字符串的字符元素的指针

但是您如何处理第 3 个字符串,例如如果 (string_count> 2) {错误消息}

#include <stdio.h> /* For fgets(), fprintf() and printf() */
#include <stdlib.h> /* For EXIT_FAILURE */
#include <ctype.h> /* For isspace() */
// COMMANDS
char exit[4] = "exit";
char list[2] = "ls";
char commandDirectory[2] = "cd";
char makeDirectory[5] = "mkdir";
char removeDirectory[5] = "rmdir";
char directoryName[129] = "";
int userInput() {
    char string[130];
    printf("> n");
    printf("Input a string: ");
    if (fgets(string, sizeof(string), stdin) == NULL) {
        fprintf(stderr, "Please enter at least one argumentn");
    }
    else
    {
        char *pointer;
        pointer = string;
        while (isspace((unsigned char) *pointer) != 0)
            pointer++;
        if (*pointer == '') {
            fprintf(stderr, "Please enter at least one argumentn");
        }
        printf("%s", string);
    }
    return 0;
}
int main(void) {
    userInput();
}

忽略意外输入的最简单方法。

读取任何预期/可选输入后,只需循环调用getchar(),直到读取""字符。

鉴于您的ls输入。 这可能是:

  1. ls
  2. ls -al
  3. ls -al myfile
  4. 和其他几种可能性

作为第二个例子cp

  1. cp 文件名 1 目录名
  2. cp 文件名 1 文件名 2 目录名
  3. cp -a --属性--仅 --备份 -强制文件名1 文件名2
  4. 和其他几种可能性

这表明只有 1 或 2 个字符串的前提无效

相关内容

  • 没有找到相关文章

最新更新