程序不输出修改后的单词。事实上,它不会返回任何东西......
如果我输入“Jake”,例如控制台上的输出是:
Jake
Modified Name: JAKE
但它应该进一步输出加密的名称。你可以帮帮我吗?我认为我对写函数没有错误
#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;
}
答案 0 :(得分:1)
我认为写作应该转到文件描述符1(stdout),不是吗?
答案 1 :(得分:0)
文件描述符0表示标准输入(比如输入设备或文件或键盘)程序基本上从那些程序读取数据并写入这些设备肯定会失败。
0 - stdin
文件描述符1表示标准输出(比如监视器,文件或磁盘更多)程序实质上是将数据写入这些。
1 - stdout
文件描述符2或多或少是一个输出设备(对处理错误的地方有一些特定的解释,即对哪个设备,文件或控制台或..)
在你的情况下2 - stderr
write( 0, ... );
程序本质上是试图写入可能以读取模式打开的输入设备,因此它将失败。
查看以下链接以获取更多信息。 wiki page here