我想使用fscanf(使用gcc的C代码)从文件解析ip。 所以,我想做的事:fscanf使用宏固定字符串大小
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。这使得宏观解决方案变得困难。 –