【问题标题】:C 3D Character Array Function Returning Char ArrayC 3D 字符数组函数返回字符数组
【发布时间】:2015-08-19 10:42:22
【问题描述】:
char getStr(int x) {
    const char *arr[10] = {"test", "temp"};
    return *arr[x];
}

int main() {
    printf("%s", getStr(0));
    return 0;
}

以上代码在 Xcode 中返回错误“EXC_BAD_ADDRESS (code=1, address=0x70)”。什么可能导致问题? 我能做些什么来解决这个问题?

【问题讨论】:

  • printfs %s 需要 char *,您提供 char...
  • 你想得到什么字符或字符串?
  • 这既不是 3D 也不是 2D “字符”数组。

标签: c arrays xcode char


【解决方案1】:

如果您只想打印一个字符,请在 printf() 中使用 %c 而不是 %s:

printf("%c", getStr(0));

另外,如果你想返回两个字符串之一,你应该这样做:

#include <stdio.h>
char* getStr(int x) {
    char* arr[2] = {"test", "temp"};
    return arr[x];
}

int main() {
    printf("%s", getStr(1));
    return 0;
}

最后,如果要返回数组的第 x 个字符:

#include <stdio.h>
#include <string.h>

#define ARRAY_SIZE 2

char getStr(int x) {
    char* arr[ARRAY_SIZE] = {"test", "temp"};
    size_t s = strlen(arr[0]);
    int i = 0;
    while ((size_t)x > s) {
        i++;
        if (i > ARRAY_SIZE) return 0;
        x -= s;
        s = strlen(arr[i]);
    }
    return arr[i][x];
}

int main() {
    printf("%c", getStr(7));
    return 0;
}

【讨论】:

  • printf("%s", getStr(3)); 怎么样?
  • 非常感谢!因此,在我使用工作代码运行之前,我犯了什么错误以及导致发生了什么?
猜你喜欢
  • 2014-04-11
  • 1970-01-01
  • 2013-03-25
  • 2014-02-06
  • 2013-11-25
  • 2011-11-23
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
相关资源
最近更新 更多