可以说我有一个字符串"MyName(10)"
我想检查一个以(%i)结尾的字符串,并在一个变量中分配该数字。
我尝试了sscanf,但是它不起作用。

sscanf("MyName(10), "%s(%i)", tempName, &count);


它在MyName(10)tempName中存储的count0

MyName可以是可变长度,不固定为"MyName",可以是"Mynaaaaaame"

最佳答案

尝试此示例代码..可能对您有帮助...您可以根据需要进行任何调整

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define IS_DIGIT(x) \
    ( x == '0' || x == '1' || x == '2' || \
      x == '3' || x == '4' || x == '5' || x == '6' || \
      x == '7' || x == '8' || x == '9' )


/* the function will return 0 in success and -1 in error */
/* on success num will contain the pointer to the number */

int
check_last_num(char * str , int * num)
{
    int len = strlen(str);
    int index = len - 1;

    /* make sure the last char is ')' */
    if (str[index] != ')')
    return -1;

    while ( --index  >= 0 && (str[index] != '(') ) {
    char c = str[index];
    if ( ! IS_DIGIT(c) )
        return -1;
    }

    /* loop exit check */
    if (index < 0)
    return -1;

    *num = atoi((const char *) &str[index + 1]);

    return 0;
}

int main(int argc , char *argv[] )
{
    int rc ;
    if ( 0 == check_last_num("MyName(890790)" , & rc))
    printf ("%d \n" , rc);
    else
    printf ("error \n");

    return 0;
}

关于c++ - 检查字符串是否以(%i)结尾,然后在变量中分配该数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30754879/

10-10 14:42