use*_*285 2 c pointers segmentation-fault
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp = fopen("lr.txt", "r");
fseek(fp, 0L, SEEK_END);
int size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
char *lorem_ipsum;
int i = 0;
lorem_ipsum = (char*) malloc(sizeof(char) * size);
while(fscanf(fp, "%s\n", lorem_ipsum) != EOF)
{
printf("%s", lorem_ipsum[i]);
i++;
}
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个程序编译并运行,然而,发生的事情是我遇到了一个段错误,我不知道这个程序究竟出了什么问题.有人可以帮我解决我得到的指针错误吗?
您正在尝试打印lorem_ipsum[i],就好像它是一个字符串.lorem_ipsum是一个字符串,所以lorem_ipsum[i]只是一个字符.
发生segfault是因为printf查看字符的值并将其lorem_ipsum[i]解释为char*指针(字符串).当然,字符的值不对应于有效的分配的内存地址.