【发布时间】:2018-04-10 14:57:47
【问题描述】:
程序不输出修改后的单词。实际上它没有返回任何东西......
如果我输入“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,为什么?
-
您应该始终检查可能失败的函数的返回值,例如
read或write。 -
你用的是什么编译器?我尝试使用在线编译器,似乎可以正常工作:onlinegdb.com/ByA-Wd7Rb
-
为什么你在循环中使用
i<=119你的输入name可能不会到达最后一点。这是最后一次写入的错误。表达第二个原因 -
你为什么在这里使用
read和write?使用可以处理 lines 的 stdio 函数。