C语言编译警告:format参数过多[-Wformat-extra-args]求助
问题:printf触发
too many arguments for format警告 我是C语言新手,编写代码时遇到编译警告:too many arguments for format [-Wformat-extra-args]。我尝试用getcwd获取当前目录路径,代码里没用到格式化输出却触发了这个警告,相关代码和警告信息如下:
replace.c: In function ‘main’:
replace.c:49:8: warning: too many arguments for format [-Wformat-extra-args]
对应的代码:
printf("Search begins in current folder: ", getcwd(currDir, sizeof(currDir)), "\n");
解决方法
这个警告的核心原因是:你给printf传了3个参数,但第一个格式字符串里没有任何占位符(比如%s)来接收后面的两个参数,编译器判定你多传了参数,所以抛出警告。
要正确打印当前目录,你需要在格式字符串里添加%s占位符来接收getcwd返回的路径,同时把换行符整合到格式字符串里更简洁:
printf("Search begins in current folder: %s\n", getcwd(currDir, sizeof(currDir)));
另外补充一点:getcwd执行失败会返回NULL,可以加个简单的错误判断让代码更健壮:
if (getcwd(currDir, sizeof(currDir)) == NULL) { perror("Failed to get current directory"); return 1; } printf("Search begins in current folder: %s\n", currDir);
内容的提问来源于stack exchange,提问作者Trickz
相关产品推荐
相关产品推荐

