SIGSEGV, 分段错误. 而 printf() 数组索引的值



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

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

但是我在编译代码时出现错误。调试代码后, 我收到"程序接收信号SIGSEGV,分段错误"。 我正在使用开发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 :%sn",i,a[i]);
~~~~^

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

printf("index %d value :%cn",i,a[i]);

同意上面的答案。 %s 表示取消引用参数并显示内容。 A[i] 使用 8 位 Valiue 作为指针。

最新更新