Gou*_*eru 2 c arrays pointers initialization segmentation-fault
由于变量'b'的初始化而出现分段错误.有人请帮帮我.
#include "stdio.h"
#include "string.h"
int main(){
char *z[20], *x, *y = {"abcd"};
int i, j, b = 4;
for (i = 0 ; i < 4 ; i++) {
for (j = 0 ; j < b ; j++) {
*(x + j) = *(y + j + i);
z[i] = x;
printf("%s", z[i]);
printf("\n");
}
b--;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您取消引用x未在任何地方初始化,因此是无效指针
*(x + j) = *(y + j + i);
Run Code Online (Sandbox Code Playgroud)
可能的方法:
声明x为数组,如
char x[5];
Run Code Online (Sandbox Code Playgroud)
并且,nul在打印之前终止它,比如
x[j] = y[i + j];
x[1 + j] = '\0';
Run Code Online (Sandbox Code Playgroud)还有一件事是,每z[i]一个被初始化的,都将指向相同的数据,即x如果你应用我建议的解决方案,则指向数组.
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |