C - sscanf不会忽略空白区域

Bin*_*ryX 1 c file scanf

我正在阅读文本文件并使用逗号作为分隔符,下面的行确实有效但是当我打印出lname时它不会忽略逗号后面的空格并在名称前打印一个空格.如何调整代码以忽略空格?

文字示例:

罗伯,史密斯,4,12,某些文字
史蒂夫,琼斯,41,286,某种文字

sscanf(line, "%[^,],%[^,],%d,%d,%s", fname,lname,&num1,&num2,info);
Run Code Online (Sandbox Code Playgroud)

Spi*_*rix 6

如果要忽略空格,只需添加一个空格字符:

sscanf(line, " %[^,], %[^,], %d, %d, %s", fname, lname, &num1, &num2, info);
Run Code Online (Sandbox Code Playgroud)

前面%d%s后面的空格,因为它们已经跳过前导空白字符.唯一没有跳过前导空格的格式说明符是%c,%[%n.

请注意,格式字符串中的空格字符*scanf指示scanf扫描任意数量的空格,包括无空格,直到第一个非空白字符.