在尝试回答this question时,我发现sscanf
存在以下奇怪问题。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
const char* lit ="George Washington, 2345678";
char buffer[1024];
int out = 0;
memset(buffer, 0, 1024);
sscanf(lit, "%50[^,]s, %d\n", buffer, &out);
printf("%s %d\n", buffer, out);
}
此代码的输出为George Washington 0
。
为什么会这样,如何纠正?