C中sscanf函数的正确格式

Sar*_*med 0 c

我有一个字符串"h264:640x480:4:30000".我使用sscanf函数如下.

char res[16] = { 0 };
int quality = 0;
int fps = 0;
sscanf(temp1, "h264:%s:%d:%d", res, &quality, &fps);
Run Code Online (Sandbox Code Playgroud)

执行此功能时.我期待"res"中的"640x480","质量"中的"4"和"fps"中的"3000".但它将整个字符串复制到"res"中,其他两个变量值保持为0.

这个问题的正确格式是什么.

MOH*_*MED 5

使用以下sscanf()字符串格式

sscanf(temp1, "h264:%[^:]:%d:%d", res, &quality, &fps);
Run Code Online (Sandbox Code Playgroud)

%s将捕获字符串中的所有字符,直到它找到一个空格或到达字符串的末尾.所以%s不是一个好选择.

%[^:]将捕获字符串中的所有字符,直到它找到':'charachter或到达字符串的末尾