- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了两个错误。我在网站上进行了搜索,发现转换类型字符和太多参数错误来自 sscanf
和 printf
,它们发生在我的文件中的第 166 和 186 行。代码。
代码处理从文本文件收集的一些信息(如姓名、城市、州、出生日期、电子邮件地址等)。我相信这与我的 %
符号或括号格式 [^\n]
有关。我看到另一篇文章,其中括号内定义了某些字符,如下所示: %40[A-Za-z0-9._@] %[A-Za-z ]
但我不知道是否这就是我需要做的至少解决未知转换类型字符问题。任何帮助,将不胜感激。变量在我的 .h 文件中声明,但名称前的小写字母(c
、sz
和 i
)代表 char、char数组和整数。
这里是错误来源的部分代码。我注释掉了一个 return 语句,因为该代码使用的方法是 void:
iScanfCnt = sscanf(szInputBuffer, "%1c %1s %4s %30[^\n] %30[^\n] %2s %2s %5s %s %d\n"
, &customer.cGender
, customer.szBirthDt
, customer.szEmailAddr
, customer.szFullName
, customer.szStreetAddress
, customer.szCity
, customer.szStateCd
, customer.szZipCd
, flight.szFlightId
, &flight.iRequestSeats);
// Check for bad input. scanf returns the number of valid conversions
if (iScanfCnt < 10)
{
printf("invalid input when reading student data, only %d valid values. \n"
, iScanfCnt);
printf("\tdata is %s\n", szInputBuffer);
//return ERR_MISSING_SWITCH;
}
printf("%1s %10.2s %10.2s %30[^n] %30[^n] %10.2s %2s %5s %s %d\n"
, &customer.cGender
, customer.szBirthDt
, customer.szEmailAddr
, customer.szFullName
, customer.szStreetAddress
, customer.szCity
, customer.szStateCd
, customer.szZipCd
, flight.szFlightId
, &flight.iRequestSeats);
}
我的错误:
p1xxxxxx.c: In function 'processReservations':
p1xxxxxx.c:166:4: warning: unknown conversion type character '0' in format [-Wformat=]
, &flight.iRequestSeats);
^
p1xxxxxx.c:166:4: warning: too many arguments for format [-Wformat-extra-args]
p1xxxxxx.c:186:5: warning: unknown conversion type character '[' in format [-Wformat=]
, &flight.iRequestSeats);
^
p1xxxxxx.c:186:5: warning: unknown conversion type character '[' in format [-Wformat=]
p1xxxxxx.c:186:5: warning: too many arguments for format [-Wformat-extra-args]
出了什么问题?
最佳答案
这是您的代码的工作示例
#include <stdio.h>
struct x
{
char cGender;
char szBirthDt[200];
char szEmailAddr[200];
char szFullName[200];
char szStreetAddress[200];
char szCity[200];
char szStateCd[200];
char szZipCd[200];
};
struct y
{
char szFlightId[200];
int iRequestSeats;
};
int main(void) {
struct x customer;
struct y flight;
int iScanfCnt;
char* szInputBuffer = "m a bbbb cccccc\nsome text\nde fg hijkl mnop 10";
iScanfCnt = sscanf(szInputBuffer, "%1c %1s %4s %30[^\n] %30[^\n] %2s %2s %5s %s %d\n"
, &customer.cGender
, customer.szBirthDt
, customer.szEmailAddr
, customer.szFullName
, customer.szStreetAddress
, customer.szCity
, customer.szStateCd
, customer.szZipCd
, flight.szFlightId
, &flight.iRequestSeats);
if (iScanfCnt < 10)
{
printf("invalid input when reading student data, only %d valid values. \n"
, iScanfCnt);
printf("\tdata is %s\n", szInputBuffer);
return -1;
}
// Fix: %c %s %s
printf("%1c %10.2s %10.2s %30s %30s %10.2s %2s %5s %s %d\n"
, customer.cGender // Fix: no &
, customer.szBirthDt
, customer.szEmailAddr
, customer.szFullName
, customer.szStreetAddress
, customer.szCity
, customer.szStateCd
, customer.szZipCd
, flight.szFlightId
, flight.iRequestSeats); // Fix: no &
return 0;
}
我只需要修复 printf
- sscanf
工作正常。
输出:
m a bb cccccc some text de fg hijkl mnop 10
关于C-转换类型字符 '0' 和 '[' 格式 [-Wformat=] 且参数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771340/
我在网上看到很多关于 -Wformat=2 的提及Clang 的选项,有时与已知的 -Wformat 一起使用(Xcode 列为“Typecheck 调用 printf/scanf 的那个,尽管它现在
这个问题已经有答案了: How to stop GCC complaining about "directive output may be truncated" in snprintf() call
我正在使用this approach将十六进制字符串转换为字节数组。代码工作正确。编译此代码时,我收到以下编译警告。有什么办法可以解决吗? /* test.c */ #include #includ
我尝试从终端调用时检查并输出为特定程序“ format.c”指定的命令行参数。我收到以下错误,但我不明白它告诉我什么。 错误: 格式指定类型'char *',但 参数的类型为'char'[
我正在用 C (Eclipse IDE) 编写代码,出现此错误 代码是 { printf("\nYour hat size is %c%c%c%%c\n",size[0][i],size[1][i],
fprintf(fptr2,"\n\n:%s",ctime(&t),"\t ","\t"); 这条线在开发中运行良好,但在 ubuntu 中运行不正常,因为它会产生以下错误 warning: too
我正在为学校做一个项目,这个警告一直困扰着我。我的代码有什么问题? fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%d\n", Item[i]->ID, Item[i
我不确定是什么导致了这个错误 ./lhapdf_wrap.cc: In function ‘void SWIG_Python_AddErrorMsg(const char*)’: ./lhapdf_w
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
这个问题在这里已经有了答案: How do I add a linker or compile flag in a CMake file? (8 个答案) 关闭 6 年前。 我正在使用 CMake
我在运行这段代码时收到上述警告。我有点不确定,因为它在 mac OS 环境中运行良好,但是一旦我在 linux 中运行它,它就停止工作了。 while(sscanf(page.ptr, "%[^\n]
我想使用自定义 printf 格式标志(通过 gcc 的 register_printf_specifier),同时仍然享受 -Wformat 和 -Werror 编译器的好处旗帜。 在下面的示例中,
这个问题在这里已经有了答案: How to escape the % (percent) sign in C's printf (13 个回答) 8 年前关闭。 我写了一个 C 程序,它给出了以下编译
当我尝试编译时,我收到以下警告: warning: spurious trailing ‘%’ in format [-Wformat=] warning: too many arguments fo
我们清理了大量警告。在某些情况下,我们将 %s 替换为 %d。一切似乎都很好,直到我们意识到生成的代码无法编译 - 字符串已被数字替换。 注意:我在复制和粘贴时检查了错误的修订版。 fprintf 字
我有一个软件正在尝试运行。它是 2008 年写的,我已经修复了很多问题,但仍然有很多这样的问题出现。我已经搜索了又搜索,但没有找到任何相关的答案。这是代码部分:/* 应用 */ aa = 0x80c4
我对此很陌生,我不知道为什么它不起作用。我可以运行它,但它不会计算任何东西。我正在使用 C 并且我已经放置了 #include printf("X1 es igual a:\n", (-b+sqrt
#include #include #include #include int main() { FILE *bp=NULL; bp = fopen("binary.txt"
我遇到了两个错误。我在网站上进行了搜索,发现转换类型字符和太多参数错误来自 sscanf 和 printf,它们发生在我的文件中的第 166 和 186 行。代码。 代码处理从文本文件收集的一些信息(
我是一名优秀的程序员,十分优秀!