【问题标题】:c print char pointer that in main when value changed in functionc 当函数中的值发生变化时,在 main 中打印 char 指针
【发布时间】:2012-12-15 00:23:24
【问题描述】:

主要

...
            char coords;
            get_coords(1, &coords);
            printf("{%s}", coords);
...

get_coords:

void get_coords(int num, char *coords){
    if (num == 1){
        *coords = '0-0';
    }
}

当代码尝试执行 printf 并简单地返回错误时似乎会发生问题...如果我将 line of codechange %s 删除到 %c 它会正常工作...

【问题讨论】:

  • char coords 是一个字符,而不是字符串。顺便说一句,错误信息是什么?
  • 上面写着"process returned -1232132131(0xc0000005)"

标签: c function pointers parameters


【解决方案1】:
char coords;

printf("{%s}", coords);

coordschar 而不是字符串。 %s 转换规范需要 char * 参数,而不是 char。传递 char 类型的对象是未定义的行为。

【讨论】:

    【解决方案2】:

    %s 是 C 字符串的格式说明符。你传递给它一个简单的char

    【讨论】:

      【解决方案3】:

      你想要的可能是这样的(请自行添加错误检查):

      #include <stdio.h>
      #include <string.h>
      
      void get_coords(int num, char *coords)
      {
          if (num == 1) {
              coords[0] = '0';
              coords[1] = '-';
              coords[2] = '0';
              coords[3] = '\0';
          }
      }
      
      int main(void)
      {
          char coords[4];
          memset(coords, 0, sizeof(coords));
      
          get_coords(1, coords);
          printf("{%s}\n", coords);
      
          return 0;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        相关资源
        最近更新 更多