我正在阅读文本文件并使用逗号作为分隔符,下面的行确实有效但是当我打印出lname时,它不会忽略逗号后面的空格并在名称前打印一个空格。如何调整代码以忽略空格?
文字示例:
罗布,史密斯,4,12,某些文字 Steve,Jones,41,286,sometextsscanf(line, "%[^,],%[^,],%d,%d,%s", fname,lname,&num1,&num2,info);
答案 0 :(得分:6)
如果要忽略空格,只需添加一个空白字符:
sscanf(line, " %[^,], %[^,], %d, %d, %s", fname, lname, &num1, &num2, info);
%d
和%s
之前的空格不是必需的,因为它们已经跳过了前导空白字符。唯一不跳过前导空格的格式说明符是%c
,%[
和%n
。
请注意,格式字符串*scanf
中的空格字符指示scanf
扫描任意数量的空格,包括无空格,直到第一个非空白字符。