繁体   English   中英

C write() 函数没有按预期工作

[英]C write() function not working as expected

程序不输出修改后的字。 事实上它不会返回任何东西......

例如,如果我输入“Jake”,控制台上的输出是:

Jake

Modified Name: JAKE

但它应该进一步输出加密名称。 你可以帮帮我吗? 我想我没有搞错 write 函数

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main() {

    char name [120];

    read(0,name,120);

    for(int i = 0; i<=119; i++){
        if(name[i] >= 'a' && name[i] <= 'z'){
            name[i] -= 32;
        }
    }

    printf("\nModified Name: %s\n",name);
    int c = 13;

    for (int i = 0; i<=119; i++){
        if(name[i] + 13 > 'Z'){
            c = i + 13 - 'Z';
            name[i] = 'A' + c;
        }else{
            name[i] = name[i] + c;
        }
    }

    write(0, name, 120);
    return 0;
}

我认为写作应该转到文件描述符 1 (stdout),不是吗?

文件描述符 0 表示标准输入(比如输入设备或文件或键盘)程序基本上从这些设备读取数据并写入这些设备肯定会失败。

0 - 标准输入

文件描述符 1 表示标准输出(比如监视器、文件或磁盘更多)程序基本上将数据写入这些。

1 - 标准输出

文件描述符 2 或多或少是一个输出设备(有一些特定的解释来处理错误发生的地方,即哪个设备,或文件,或控制台或 .. )

2 - 标准错误

在你的情况下

write( 0, ... ); 

程序本质上是在尝试写入可能以读取模式打开的输入设备,因此它将失败。

查看以下链接了解更多信息。 维基页面在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM