C write()函数未按预期工作

C write()函数未按预期工作,c,function,printf,output,C,Function,Printf,Output,程序不输出修改后的字。事实上,它不会返回任何东西 例如,如果我输入“Jake”,控制台上的输出为: Jake Modified Name: JAKE 但它应该进一步输出加密的名称。你能帮我吗?我想我没有弄错write函数 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main() { char name [120]

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

例如,如果我输入“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;
}
#包括
#包括
#包括
#包括
int main(){
字符名[120];
读取(0,名称,120);

对于(inti=0;i='a'&&name[i]我认为应该写入文件描述符1(stdout),否?

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

0-stdin

文件描述符1表示标准输出(例如监视器、文件或磁盘),程序本质上是将数据写入这些输出

1-stdout

文件描述符2或多或少是一个输出设备(对处理错误的位置有一些特定的解释,即错误到达哪个设备、文件、控制台或..)

2-stderr

对你来说

write( 0, ... ); 
程序实质上是试图写入一个可能以读模式打开的输入设备,因此它将失败

查看下面的链接了解更多信息。

写入函数中的文件描述符为0,为什么?您应该始终检查可能失败的函数的返回值,例如
读取
写入
。您使用的编译器是什么?我尝试了一个在线编译器,似乎工作正常:为什么在循环中使用
I为什么在这里使用
读取
写入
可以处理行的stdio函数。