gpt4 book ai didi

c - ISO C、sprintf 和以千位分组的十进制转换

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:40 25 4
gpt4 key购买 nike

我正在尝试像这样做一个简单的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com