解析字符串中的整数

Parsing an integer in a string

我试图在字符串中获取一个由 space 分隔的整数,我期望的示例输入和输出是:
i : 单词 1
o : 1

i : 单词 20
o : 20

我试过这样做:

scanf("word %d", &num);

但是没用。
我也试过这个:

scanf("%[^/]*c%d", &num);

scanf("%[^/] %d", &num);

但是,none 仍然有效。任何人都可以给我一个如何做到这一点的提示吗?谢谢

注意:输出整数前面没有 space。

完整代码:

int t, num;
char word[1000];
int arr[100], arr2[100];
fgets(word, 1000, stdin);
scanf("%d", &t);
while(t--){
    scanf("word %d", &num);
    printf("%d\n", num);
}

正如您在上面的示例代码中看到的,在为 num 进行输入之前,我还进行了更多输入。

第一个代码只需要在 scanf 文本序列之前添加一个 space 来丢弃之前读取的 stdin 中留下的任何空白字符,但是您可以对其进行改进进一步识别错误的输入并在这种情况下丢弃它们:

while(t){
    if(scanf(" word %d", &num) == 1){ //space before word
        printf("%d\n", num);
        t--;
    }
}

但是如果你想使用正则表达式说明符,你可以这样做:

while(t){
    if(scanf("%*[^ ]%d", &num)){
        printf("%d\n", num);
        t--;
    }
}

这不仅适用于 word,而且适用于任何其他字符串,前提是它只有一个词, 没有spaces,除了最后那个