小编use*_*285的帖子

指针与基本C文件I/O程序有关

#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)

这个程序编译并运行,然而,发生的事情是我遇到了一个段错误,我不知道这个程序究竟出了什么问题.有人可以帮我解决我得到的指针错误吗?

c pointers segmentation-fault

2
推荐指数
1
解决办法
329
查看次数

如何解释此调试错误

作为一名训练有素的黑客,我决定自己创建一个string_reverse函数,它接受一个字符串,为一个新字符串分配内存,并返回一个指向新字符串的指针,但是我没有得到我想要的东西,这会返回分段错误.

#include <stdio.h>
#include <stdlib.h>


char* string_reverse(char* string);

char* string_reverse(char* string) {
  int len = 0;
  for (int i = 0; *(string + i) != '\0'; ++i)
    len++;

  char* result = (char*)malloc(len * sizeof(char));
  if (result == NULL){
    puts("Pointer failure");
    exit(EXIT_FAILURE);
  }

  for (int i = 0; *(string + i) != '\0'; ++i)
    *(result + (len - i)) = *(string + i);

  return *result;
}

int main() {
  char* str= "Ni Hao!";
  char* result = string_reverse(str);

  printf("%s\n", result);
  free(result);
  return …
Run Code Online (Sandbox Code Playgroud)

c debugging segmentation-fault

2
推荐指数
1
解决办法
193
查看次数

标签 统计

c ×2

segmentation-fault ×2

debugging ×1

pointers ×1