首页 > 解决方案 > 无法在 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;

标签: cpointers

解决方案


从评论(这实际上应该是问题的一部分):

该程序的参数是 print_this("%x", 1, '7')

您通过传递单个字符而不是字符串来调用它。

它应该是 :

print_this("%x", 1, "7");

推荐阅读