Arrays 用C语言打印指针数组

Arrays 用C语言打印指针数组,arrays,c,pointers,Arrays,C,Pointers,我想打印以下字符数组 #define LENGTH 8 int main (){ typedef char Arr[LENGTH]; Arr test = {1,0,1}; Arr* a = &test; for(int i=0;i<LENGTH;i++){ printf("%s ", a[i]); } } #定义长度8 int main(){ typedef char Arr[长度]; Arr测试

我想打印以下字符数组

#define LENGTH 8

int main (){

    typedef char Arr[LENGTH];
    Arr test  = {1,0,1};
    Arr* a = &test;
    for(int i=0;i<LENGTH;i++){
        printf("%s ", a[i]);
    }
}
#定义长度8
int main(){
typedef char Arr[长度];
Arr测试={1,0,1};
Arr*a=&test;

对于(int i=0;i修复许多错误并重新编辑以使用strlen:

#define LENGTH 8
#include <stdio.h>
#include <string.h>
int main()
{
    typedef char Arr[LENGTH];
    Arr test  = {'1','0','1'};
    Arr* a = &test;
    size_t len = strlen(test);
    for(int i=0;i<len;i++){
        printf("%c ", (*a)[i]);
    }
}
#定义长度8
#包括
#包括
int main()
{
typedef char Arr[长度];
Arr测试={'1','0','1'};
Arr*a=&test;
尺寸长度=标准长度(试验);
对于(int i=0;i3个问题:

  • 您使用的是
    %s
    ,用于字符串。字符使用
    %c
  • 您需要
    (*a)[i]
    ,因为
    a
    是指向数组的指针,所以
    *a
    是数组
  • 1和0对不可打印的字符进行编码。因此您将看不到任何内容

  • 首先修复您的编译错误。我可以编译此文件以修复您的警告。因此,现在代码已编译,我没有警告。我想,我定义了一个长度为8的数组,但我只写了3个元素。最大的错误是:决不使用typedef数组或指针。@AnttiHaapala这不是错误。@Silidrone这是一个问题。这是人为错误:D@AnttiHaapala是的,这是一个糟糕的做法。这太好了,我纠正了我的错误。现在它可以工作了。可以使用sizeof并找到指针数组的大小吗?根据你的另一个问题,我理解你的意思是找到字符串len(而不是sizeof)。要做到这一点,请使用strlen(测试)。如果这篇文章回答了你的问题,请将其标记为已回答