【发布时间】:2017-11-19 21:19:31
【问题描述】:
我是 UNIX 中文件处理的新手,我无法弄清楚我在哪里以及如何遇到分段错误。是否有任何我没有分配的内存,或者它是实际打开和读取文件的问题。注意:在同一目录中有一个名为“hi.txt”的空文本文件。
read.c
#include <stdio.h>
#include <string.h>
FILE *fp;
FILE *wp;
void open(char *name)
{
char *outname = strcat(name, ".rzip");
fp = fopen(name, "r");
wp = fopen(outname, "w");
}
char read()
{
return getc(fp);
}
void write(char c)
{
putc(c, wp);
}
void close()
{
fclose(fp);
}
main.c
void open(char *);
char read();
void write(char);
void close();
int main()
{
open("hi.txt");
write('c');
close();
return 0;
}
【问题讨论】:
-
"hi.txt"没有空间来组合其他字符串。例如open("hi.txt");-->char filename[256] = "hi.txt"; open(filename); -
并避免使用
open、read、write和close之类的名称。 -
@BLUEPIXY 嗯,我似乎仍然遇到了段错误。另外,我会听取您的建议并更改这些函数名称。编辑:现在已经修好了。我应该改用什么名字?
-
例如
open-->my_open.