C 忽略 scanf 上的破折号
C ignore dashes on scanf
我正在尝试从以“-”分隔的字符串中加载两个值。
我不知道在 scanf 中放什么来忽略这个破折号。
这是一个说明问题的简化片段:
char first[3];
char second[3];
char* str = "foo - bar";
sscanf(str, "%s <what should be here> %s", first, second);
printf("%s %s", first, second);
如果占位符中没有任何内容,程序将打印“foo -”
要告诉 scanf
期待 -
,请在格式字符串中输入 -
:
sscanf(str, "%s - %s", first, second);
此外,使您的数组足够大以容纳您期望的字符以及终止空字符:
char first[4];
char second[4];
您还应该将 scanf
限制为接收数组的大小:
sscanf(str, "%3s - %3s", first, second);
如果 -
可能不存在,您需要额外的代码来处理它;一个简单的 scanf
是不够的。同样,如果字符串可能超过三个字符,则需要额外的代码。
我正在尝试从以“-”分隔的字符串中加载两个值。
我不知道在 scanf 中放什么来忽略这个破折号。
这是一个说明问题的简化片段:
char first[3];
char second[3];
char* str = "foo - bar";
sscanf(str, "%s <what should be here> %s", first, second);
printf("%s %s", first, second);
如果占位符中没有任何内容,程序将打印“foo -”
要告诉 scanf
期待 -
,请在格式字符串中输入 -
:
sscanf(str, "%s - %s", first, second);
此外,使您的数组足够大以容纳您期望的字符以及终止空字符:
char first[4];
char second[4];
您还应该将 scanf
限制为接收数组的大小:
sscanf(str, "%3s - %3s", first, second);
如果 -
可能不存在,您需要额外的代码来处理它;一个简单的 scanf
是不够的。同样,如果字符串可能超过三个字符,则需要额外的代码。