C - sscanf不会忽略空白区域

时间:2016-03-22 13:53:57

标签: c file scanf

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

文字示例:

罗布,史密斯,4,12,某些文字 Steve,Jones,41,286,sometext

sscanf(line, "%[^,],%[^,],%d,%d,%s", fname,lname,&num1,&num2,info);

1 个答案:

答案 0 :(得分:6)

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

sscanf(line, " %[^,], %[^,], %d, %d, %s", fname, lname, &num1, &num2, info);

%d%s之前的空格不是必需的,因为它们已经跳过了前导空白字符。唯一不跳过前导空格的格式说明符是%c%[%n

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