【发布时间】:2015-09-29 01:35:56
【问题描述】:
大家好,我在尝试写入文件时遇到问题。我在网络课上,我们应该实现一个简单的 ftp 服务器。它涉及读取文件并通过套接字将其发送给客户端。当它到达客户端时,您将输出写入文件。我已经实现了一个服务器和客户端,它们在打印时都可以正常工作。但是,当我附加到文件时,它的工作方式不同。输出不同。而不是像以前那样写所有行,现在只有第一行被写入文件或有时两行。我不知道是什么导致了问题。这是代码。我传递大小为 4096 的缓冲区。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/socket.h>
#define MAX_LENGTH 4096
int write_line(char string[MAX_LENGTH]){
FILE *fp;
char* array = strdup(string);
char* filename="client.txt";
char* dir=get_current_dir_name();
char fullpath[MAX_LENGTH];
strcat(fullpath, dir);
strcat(fullpath, "/");
strcat(fullpath, filename);
fp=fopen(fullpath, "a");
if(fp==NULL)
{
return -1 ;
}
int i;
for (i=0; i<strlen(string); i++)
{
fprintf(fp,"%c",*(array+i));
}
fclose(fp);
bzero(fullpath, MAX_LENGTH);
return 0;
}
【问题讨论】: