谁能告诉我这段代码有什么问题?我遇到了一个段错误.我正在尝试将文件的第一行读入新创建的文件中.
char *buffer;
int main(int argc, char *argv[])
{
FILE *source = fopen(argv[0], "r");
FILE *destination = fopen("destination", "w");
fgets(buffer, 500, source);
fwrite(buffer, 1, sizeof(buffer), destination);
}
Run Code Online (Sandbox Code Playgroud)
你还没有分配任何东西buffer.
更改:
char *buffer;
Run Code Online (Sandbox Code Playgroud)
至
char buffer[500];
Run Code Online (Sandbox Code Playgroud)
正如你的代码现在,buffer它只是一个未初始化的指针.试图取消引用它将导致未定义的行为.(在你的情况下是seg-fault)
或者,您可以动态分配内存buffer:
buffer = (char*)malloc(500 * sizeof(char));
Run Code Online (Sandbox Code Playgroud)
但你应该记得以后释放内存:
free(buffer);
Run Code Online (Sandbox Code Playgroud)
如果你使用后一种方法,代码将如下所示:
char *buffer;
int main(int argc, char *argv[])
{
FILE *source = fopen(argv[0], "r");
FILE *destination = fopen("destination", "w");
// Allocate
buffer = (char*)malloc(500 * sizeof(char));
fgets(buffer, 500, source);
fwrite(buffer, 1, 500 * sizeof(char), destination); // Fixed here
// Free memory
free(buffer);
// Don't forget return value
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |