【发布时间】:2015-10-06 02:08:51
【问题描述】:
我正在尝试打开一个文件,将其读入,然后通过套接字连接将其逐行发送到等待的客户端。我遇到的问题是由于某种原因循环不起作用,每次触发“LIST”命令时它只会发送文件的第一行。
else if (cmd.compare(list) ==0) /* LIST user input */
{
file_ptr = fopen("file1.txt", "r");
while (fgets(buf, sizeof(buf), file_ptr) != NULL) {
{
while(!feof(file_ptr))
send (new_s, buf, strlen(buf) + 1, 0);
printf("%s",buf);
}
}
fclose(file_ptr);
}
谁能看到我做错了什么?
客户端“LIST”命令的输出(每次都输入 LIST 以获得这些结果)
列表
ECHO:matthew funk 3123214321
列表
回声:3123214321
列表
ECHO:tthew funk 3123214321
列表
回声:23214321
列表
ECHO:hew funk 3123214321
列表
回声:214321
列表
ECHO:w funk 3123214321
列表
回声:4321
列表
ECHO:funk 3123214321
^C
正在读入的文件内容
"file1.txt" 12L, 399Cc
马修芬克 3123214321
1000Jonny Applesee7655431234
1001比利·乔尔 7312431234
1002比利偶像 123456789
1003Jean Doe 9876543211
1000 peauntbuJelly 123456789
1001妈妈THreasea987654321
1000 彼得保罗和
1000 计算机网络i12341234123
1001 计算机网络i12341234123
1002 计算机网络i12341234123
1003 计算机网络i12341234123
【问题讨论】:
-
while(!feof(file_ptr))应该做什么(除了创建无限循环)。我不认为那是你真正的代码,因为没有办法跳出那个循环。 -
@user 我认为这会逐行发送文件的输出,直到它到达 EOF
-
while(fgets...循环将逐行发送文件,直到到达 EOF。while(!feof...)循环没有任何用处。您可能应该有一个内部循环,一直调用send,直到所有字节都发送完毕,但while(!feof...)绝对不是这样做的方法。 -
好吧,我对 while(!feof跨度>