我想知道scanf和数组的工作原理,所以我创建了一个代码,逐行打印数组的每个索引的值。
#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]);
}
}
但是在编译代码时出现错误。调试代码后, 我收到“程序收到信号SIGSEGV,分段错误。” 我正在使用Dev-C ++
答案 0 :(得分:2)
使用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]);
答案 1 :(得分:2)
同意以上答案。 %s说取消引用arg并显示内容。 a [i]使用8位变量作为指针。