我有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一起使用。
感谢。
答案 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;
}