gpt4 book ai didi

c - Linux套接字编程: Socket writing line to a file in c

转载 作者:行者123 更新时间:2023-11-30 19:42:05 25 4
gpt4 key购买 nike

大家好,我在尝试写入文件时遇到问题。我正在上网络课,我们应该实现一个简单的 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;
}

最佳答案

此代码将每个字符的数值以 ASCII 形式打印到文件中。你不可能想要这样。无论如何,您不需要其中的大部分内容。

int write_line(char string[MAX_LENGTH]){

FILE *fp = fopen("client.txt", "a");

if(fp==NULL)
{
return -1 ;
}
fwrite(string, sizeof char, strlen(string), fp);
fclose(fp);
return 0;
}

但是非常可疑,例如您没有将长度传递给此函数。我想看看从套接字读取的代码。

关于c - Linux套接字编程: Socket writing line to a file in c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32834309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com