如果<用户按Enter键,如何停止fscanf输入max args

时间:2017-04-29 22:00:49

标签: c scanf

我有3个以这种方式声明的char数组:

char arg1[25];
char arg2[25];
char arg3[25];

我提示用户以这种方式输入一些参数:

fscanf(stdin, "%s %s %s", arg1, arg2, arg3);

printf(" %s %s %s", arg1, arg2, arg3);

我的问题是用户可能只输入arg1和arg2的值,然后按Enter键。

如何使用fscanf以便用户在按Enter之前不需要输入所有3个参数?

这些数组中的值将与execvp一起使用。

感谢。

1 个答案:

答案 0 :(得分:5)

fgets将接受输入。然后sscanf可以将输入解析为以空格分隔的字符串,并返回扫描的字符串数。

#include <stdio.h>

int main(){
    char input[100] = "";
    char arg1[25] = "";
    char arg2[25] = "";
    char arg3[25] = "";
    int scanned = 0;

    fgets ( input, sizeof input, stdin);
    scanned = sscanf ( input, "%24s%24s%24s", arg1, arg2, arg3);
    if ( scanned == 1) {
        printf ( "%s\n", arg1);
    }
    if ( scanned == 2) {
        printf ( "%s %s\n", arg1, arg2);
    }
    if ( scanned == 3) {
        printf ( "%s %s %s\n", arg1, arg2, arg3);
    }
    return 0;
}