【发布时间】:2014-03-22 11:12:07
【问题描述】:
我正在开发一个简单的 c 程序,它需要两个 args 一个字符 e 或 d 和一个键。如果 e 它将加密,如果 d 在这两种情况下都使用密钥解密。如果出现错误,它会从标准输入读取并输出到标准输出或标准错误。我收到警告消息
*cypher.c:30:4: 警告:传递“fputc”的参数 1 从指针生成整数而不进行强制转换 [默认启用] /usr/include/stdio.h:579:12:注意:预期为“int”,但参数的类型为“char”
程序编译和编码,但解码似乎不起作用,如果它传递一个字符而不是 d 或 e,它也不会抛出错误,因为它应该。任何帮助将不胜感激。
*已被编辑以解决一些问题,例如,last fputc() 现在是 fputs(),i++ 被重新添加到 last 循环中,并且 if(ende = e) 替换为 if(ende == “e”)。错误代码不再是问题,但程序功能似乎仍然存在。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main(char ende, char key[150]){
int e;
int i=0;
int c=fgetc(stdin);
int n=strlen(key);
if(ende == "e"){
while(c != EOF){
c= fgetc(stdin);
e=(c - 32 + key[i % n]) % 95 + 32;
fputc( e, stdout);
i++;
}
}
else if (ende == "d"){
while(e != EOF){
e= fgetc(stdin);
c=(e - 32 - key[i % n] + 3 *95) %95 + 32;
fputc( c, stdout);
i++
}
}
else{
fputs("you broke it",stderr);
exit (1);
}
exit (0);
}
【问题讨论】:
-
你最后一个 fputc 不符合规则。 fputc 应该只输入一个字符。而是使用 fputs。
-
了解如何将参数传递给您的程序
-
好的,我发现我的第一个错误是我不小心从解码块中删除了 i++。
-
你知道一篇关于在 c 中传递参数的有用文章吗?