【发布时间】:2012-09-26 18:11:34
【问题描述】:
我想使用 fscanf(使用 gcc 的 C 代码)从文件中解析 ip。 所以,我想做:
char myip[INET_ADDRSTRLEN];
fscanf(file, "%16s", myip);
但是,我不想硬编码数字 16,所以我尝试使用宏,但它不起作用。
#define _STRIFY(x) #x
char myip[INET_ADDRSTRLEN];
fscanf(file, "%" _STRIFY(INET_ADDRSTRLEN) "s", myip);
这是我得到的错误
unknown conversion character type 'N' format
那么我的代码有什么问题?
感谢您的帮助:)
【问题讨论】:
-
不要忘记,如果您的缓冲区长度为 INET_ADDRSTRLEN,则要指定给
sprintf()的数字是 INET_ADDRSTRLEN-1。这使得基于宏的解决方案变得困难。