【发布时间】:2019-10-18 10:12:42
【问题描述】:
我的输入如下:
Someting sth
example
5 15
3
我想scanf逐行输入以获取该行的全部内容。但是当达到第一个数字时(前面可能有空格/制表符),我想将其扫描为 int。
这就是我想出的,但它不能按预期工作 - 光标仍然不会停在数字字符处。
char person_name[1000];
int n;
while (scanf("%[^\n/D]%*c", person_name) > 0) {
if (checkIfContainsNumber(person_name) == 0) {
appendToLinkedList(&head_ref, person_name);
} else {
break;
}
}
while (scanf("%d", &n) > 0) {
printf("%d ", n);
}
【问题讨论】:
-
您已经阅读数字字符。
scanf("%s", person_name);然后if(isdigit(person_name[0])) { int num = atoi(person_name); } -
是的,但如果我使用
scanf("%s", person_name);,那么我会逐字阅读,而不是逐行阅读。我需要区分同一行是否有更多的单词。 -
哦,那么在
" %[^\n]"前面放一个空格来过滤前导空格。 -
我尝试稍微编辑一下正则表达式,所以我的最终正则表达式看起来像:
scanf(" %[^\n^0-9]%*c", person_name)-%前面的空格有帮助。非常感谢。 -
所以你现在不必费心删除 trailing 换行符了。