C 3D字符数组函数返回字符数组

C 3D字符数组函数返回字符数组,c,arrays,xcode,char,C,Arrays,Xcode,Char,上面的代码在Xcode中返回错误EXC_BAD_ADDRESS code=1,ADDRESS=0x70。是什么导致了这个问题? 我能做些什么来解决这个问题 如果只想打印字符,请在printf中使用%c而不是%s: 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。是什么导致了这个问题?
我能做些什么来解决这个问题

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

char getStr(int x) {
    const char *arr[10] = {"test", "temp"};
    return *arr[x];
}

int main() {
    printf("%s", getStr(0));
    return 0;
}
此外,如果要返回两个字符串中的一个,则应执行以下操作:

printf("%c", getStr(0));
最后,如果要返回数组的第x个字符:

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

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

printfs%s需要一个char*,您提供了一个char…您想要获取什么字符或字符串?它既不是三维字符数组,也不是二维字符数组。printf%s,getStr3;,怎么样;?非常感谢!所以,在我开始编写工作代码之前,我犯了什么错误,导致了什么?
#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;
}