基本C文件I / O程序指针问题
-
21-08-2019 - |
题
#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 *指针(字符串)。自然地,字符的值不对应于有效的,分配的内存地址。
其他提示
您正在传递一个char
(lorem_ipsum[i]
)到fscanf
功能,这需要一个char*
作为参数。
您可能需要使用lorem_ipsum
或lorem_ipsum+i
如果你真的想要去除第一i
字符了。
你能解释一下你想在for循环做什么?
在我看来,你正试图逐行读取文件中的行,然后打印行。 但是,当你做的printf(“%S”,lorem_ipsum [1]),要发送的字符,而不是字符串。
不隶属于 StackOverflow