c - 使用c程序在linux中读取目录

标签 c linux fopen

我正在尝试在 linux 中用 c 语言创建一个简单的文件服务器。我的想法是,我在客户端输入要从服务器传输的文件的名称。一旦建立连接,服务器就会收到该文件名。但是无论我传递什么参数,它总是在当前目录中打开第一个文件。这是服务器代码

getcwd(buf3, sizeof(buf3));
dirp = opendir(buf3);

while (dptr = readdir(dirp)) {
    if (strcmp(buf, dptr->d_name) == 0);
        break;
    printf("%s\n", dptr->d_name);
}

string(dptr->d_name);
f = fopen(namelist[n1]->d_name, "r");

//f1=fopen(buf,"r");
if (f1 == NULL)
    err_sys("open error");

while (1)           //service client till it closes connection
{
    fgets(buf2, 50, f1);

    buflen = strlen(buf2);
    printf("Data Read From File: %d\n", buflen);

    if ((n = send(clifd, buf2, buflen, 0)) < 0)
        err_sys("send error");
    else if (n == 0) {
        printf("\nNo Data Recieved");
        break;
    }

    buf2[n] = 0;
};              //end of inner while

close(clifd);
fclose(f1);
exit(0); 

最佳答案

if(strcmp(buf,dptr->d_name)==0);
    break;

应该是:

if(strcmp(buf,dptr->d_name)==0) {
    break;
}

它会立即转义您的 while 循环。

关于c - 使用c程序在linux中读取目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8927474/

相关文章:

c - 在范围内写入数组值时发生访问冲突

c - 从套接字读取直到某个字符在缓冲区中

linux - 使用heroku调度程序调度websolr重新索引

c++ - 简单的 fopen 和 fprintf 不工作

c++ - fopen_s 未在 ubuntu 下解决

c - 需要就地反转文件,但它只适用于一行文件

c - 从unix套接字读取字节并在c中打印ip地址

在 C 中链接 2 个字符串

c - 硬链接(hard link)与其在 C 中的程序之间的区别

java - 从 java 检测 linux 发行版