使用命令行参数中的 getchar 对程序进行编码,并使用 putchar 发送以进行解码
encode program using getchar from command line argument and putchar to send to decode
所以我正在尝试制作一个 encode/decode 程序。到目前为止,我还停留在编码部分。我必须能够从命令行参数中获取消息,并使用种子随机数对其进行编码。这个数字将由用户作为第一个参数给出。
我的想法是从 getchar 中获取 int 并将随机数结果添加到它。然后我想把它恢复到标准输出,这样另一个程序就可以将它作为参数读取,并使用相同的种子对其进行解码。到目前为止,我无法让 putchar 正常工作。关于我应该修复或关注什么的任何想法?提前致谢!
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int pin, charin, charout;
// this verifies that a key was given at for the first argument
if (atoi(argv[1]) == 0) {
printf("ERROR, no key was found..");
return 0;
} else {
pin = atoi(argv[1]) % 27; // atoi(argv[1])-> this part should seed the srand
}
while ((getchar()) != EOF) {
charin = getchar();
charout = charin + pin;
putchar(charout);
}
}
你不应该调用 getchar()
两次,它会消耗流中的字符,你会丢失它们,这样试试
while ((charin = getchar()) != EOF) {
charout = charin + pin;
putchar(charout);
}
另外,不要检查 atoi()
returns 0
是一个数字还是一个有效的种子,而是这样做
char *endptr;
int pin;
if (argc < 2) {
fprintf(stderr, "Wrong number of parameters passed\n");
return -1;
}
/* strtol() is declared in stdlib.h, and you already need to include it */
pin = strtol(argv[1], &endptr, 10);
if (*endptr != '[=11=]') {
fprintf(stderr, "You must pass an integral value\n");
return -1;
}
所以我正在尝试制作一个 encode/decode 程序。到目前为止,我还停留在编码部分。我必须能够从命令行参数中获取消息,并使用种子随机数对其进行编码。这个数字将由用户作为第一个参数给出。
我的想法是从 getchar 中获取 int 并将随机数结果添加到它。然后我想把它恢复到标准输出,这样另一个程序就可以将它作为参数读取,并使用相同的种子对其进行解码。到目前为止,我无法让 putchar 正常工作。关于我应该修复或关注什么的任何想法?提前致谢!
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int pin, charin, charout;
// this verifies that a key was given at for the first argument
if (atoi(argv[1]) == 0) {
printf("ERROR, no key was found..");
return 0;
} else {
pin = atoi(argv[1]) % 27; // atoi(argv[1])-> this part should seed the srand
}
while ((getchar()) != EOF) {
charin = getchar();
charout = charin + pin;
putchar(charout);
}
}
你不应该调用 getchar()
两次,它会消耗流中的字符,你会丢失它们,这样试试
while ((charin = getchar()) != EOF) {
charout = charin + pin;
putchar(charout);
}
另外,不要检查 atoi()
returns 0
是一个数字还是一个有效的种子,而是这样做
char *endptr;
int pin;
if (argc < 2) {
fprintf(stderr, "Wrong number of parameters passed\n");
return -1;
}
/* strtol() is declared in stdlib.h, and you already need to include it */
pin = strtol(argv[1], &endptr, 10);
if (*endptr != '[=11=]') {
fprintf(stderr, "You must pass an integral value\n");
return -1;
}