SIGSEGV,分段错误。 while printf() 数组索引的值

SIGSEGV, Segmentation fault. while printf() value of index of an array

我想知道 scanf 和 array 是如何工作的,所以我创建了一个代码来逐行打印数组每个索引的值。

#include<stdio.h>
int main(){
    char a[35];
    scanf("%30s", a);
    for(int i=0;i<30;i++){
        printf("index %d value :%s\n",i,a[i]);
    }
}

但是我在编译代码时遇到错误。在我调试代码后, 我得到 "Program received signal SIGSEGV, Segmentation fault." 我正在使用 Dev-C++

使用 g++ 编译时,我收到此警告:

test.cc: In function ‘int main()’:
test.cc:6:45: warning: format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘int’ [-Wformat=]
         printf("index %d value :%s\n",i,a[i]);
                                         ~~~~^

您可能想将 %s 更改为 %c,因为数组的每个元素都是一个字符:

printf("index %d value :%c\n",i,a[i]);

同意楼上的回答。 %s 表示取消引用 arg 并显示内容。 a[i] 正在使用一个 8 位值作为指针。