c - 无法在 C 中打印出带有可变参数的 char *
问题描述
我正在编写自己的 printf 进行练习,并且是 C 的新手。
出于某种原因,我将其中一个 args 转换为 char * 后无法打印出来。
我遇到了段错误。
void print_this(char* formatString, int numArgs, ... ) {
if (formatString[0] != '%') {
print_error(formatString);
}
// declare vars I guess since you can't define them in the case statement
void * bsPtr;
void * voidPtr;
char * charPtr;
int i = 0;
// parse args
va_list list;
va_start(list, numArgs);
switch (formatString[1]) {
case 'x':
charPtr = va_arg(list, char *);
printf("charPtr %s \n", charPtr); //segFault
break;
解决方案
从评论(这实际上应该是问题的一部分):
该程序的参数是 print_this("%x", 1, '7')
您通过传递单个字符而不是字符串来调用它。
它应该是 :
print_this("%x", 1, "7");
推荐阅读
- eclipse - Jena 位置映射找不到配置
- javascript - 将模板字符串传递给 array.filter 操作
- c# - c#哪个是给随机数函数的更好方法
- c++ - 为什么我在其他输出线之间得到“1”输出?
- java - 如何获取 Firebase 实时数据库中根节点的子 ID?
- c++ - 调用者如何知道 VARIANT 中何时有 Decimal?
- sed - 如何像 cut -d':' -f2 一样使用 sed?
- rest - Netsuite Rest Web 服务签名
- angular - 在 from 运算符中使用的函数中构建和返回 HTTP 请求
- svelte - Sapper/Svelte rollup/plugin-json 给 stripejs 错误