我正在尝试做一个简单的sprintf
,如下所示:
snprintf(dest, maxlen_dest, "%'lu", along);
请注意字符串中的引号:'
。
这意味着(根据手册):
' For decimal conversion (i, d, u, f, F, g, G) the output is to be grouped with thousands’ grouping characters if the locale information indicates any. Note that many versions of gcc(1) cannot parse this option and will issue a warning. SUSv2 does not include %'F.
因此,当我编译时,我收到此警告:
../common/utils.c:29: warning: ISO C does not support the ''' printf flag
../common/utils.c:29: warning: ISO C does not support the ''' printf flag
所以,我的问题是:是否有一个我可以使用的“支持 ''' printf 标志”的函数?
我希望我的输出是这样的:
51 254 234
1 424 000
...
...
...
这是我的 Makefile(以防有一些我应该修改的选项):
CC = gcc
# -g = all debug options
CFLAGS = -g -I../common -W -Wall -pedantic -std=c99
OBJECTS = o/main.o o/opts.o o/verif_liens_bidirectionnels.o o/ecriture.o o/plugin_utils.o o/plugin_algo_groupes.o ../common/o/cell.o ../common/o/utils.o ../common/o/verif.o ../common/o/lecture.o
gen : $(OBJECTS)
$(CC) -o gen $(OBJECTS) $(CFLAGS) -lm -lgd -lz
o/main.o : main.c
$(CC) -o $@ -c main.c $(CFLAGS)
o/opts.o : opts.c opts.h
$(CC) -o $@ -c opts.c $(CFLAGS)
o/verif_liens_bidirectionnels.o : verif_liens_bidirectionnels.c verif_liens_bidirectionnels.h
$(CC) -o $@ -c verif_liens_bidirectionnels.c $(CFLAGS)
o/ecriture.o : ecriture.c ecriture.h
$(CC) -o $@ -c ecriture.c $(CFLAGS)
o/plugin_utils.o : plugin_utils.c plugin_utils.h
$(CC) -o $@ -c plugin_utils.c $(CFLAGS)
o/plugin_algo_groupes.o : plugin_algo_groupes.c plugin_algo_groupes.h
$(CC) -o $@ -c plugin_algo_groupes.c $(CFLAGS)
../common/o/cell.o : ../common/cell.c ../common/cell.h
$(CC) -o $@ -c ../common/cell.c $(CFLAGS)
../common/o/utils.o : ../common/utils.c ../common/utils.h
$(CC) -o $@ -c ../common/utils.c $(CFLAGS)
../common/o/verif.o : ../common/verif.c ../common/verif.h
$(CC) -o $@ -c ../common/verif.c $(CFLAGS)
../common/o/lecture.o : ../common/lecture.c ../common/lecture.h
$(CC) -o $@ -c ../common/lecture.c $(CFLAGS)
clean :
rm $(OBJECTS)
最佳答案
你可以添加
../common/o/utils.o : CFLAGS := $(filter-out -pedantic,$(CFLAGS))
到 makefile,它应该抑制特定文件的警告。
如果您不想依赖非标准 libc 扩展,则必须自己实现该功能...
关于c - ISO C、sprintf 和以千为单位分组的十进制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9514527/