#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;
}

这个程序编译并运行,然而,实际情况是,我有一个段错误,我不知道究竟相当有什么不好这个节目。可能有人帮助我的指针错误我?

有帮助吗?

解决方案

您要打印lorem_ipsum[i]就好像它是一个字符串。 lorem_ipsum是一个字符串,所以lorem_ipsum[i]只是一个字符。

在段错误发生,因为printf的着眼于在lorem_ipsum[i]的字符的值,并且将其解释为一个char *指针(字符串)。自然地,字符的值不对应于有效的,分配的内存地址。

其他提示

您正在传递一个charlorem_ipsum[i])到fscanf功能,这需要一个char*作为参数。

您可能需要使用lorem_ipsumlorem_ipsum+i如果你真的想要去除第一i字符了。

你能解释一下你想在for循环做什么?

在我看来,你正试图逐行读取文件中的行,然后打印行。 但是,当你做的printf(“%S”,lorem_ipsum [1]),要发送的字符,而不是字符串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top