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 位值作为指针。
我想知道 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 位值作为指针。