【发布时间】:2012-09-23 23:23:29
【问题描述】:
我有一些令人尴尬的基本问题,我似乎无法找到我能够处理的答案。上次我向你们寻求帮助时,我的运气非常好,所以我希望能重蹈覆辙。我之前没有任何类型的 C/C++ 方面的经验,而且这门课假设至少有 1 个学期,所以它踢了我一点。
这是教授给我的代码:
#include <stdio.h>
#include <string.h>
void encrypt(int offset, char *str) {
int i,l;
l=strlen(str);
printf("\nUnencrypted str = \n%s\n", str);
for(i=0;i<l;i++)
if (str[i]!=32)
str[i] = str[i]+ offset;
printf("\nEncrypted str = \n%s \nlength = %d\n", str, l);
}
void decrypt(int offset, char *str) {
// add your code here
}
void main(void) {
char str[1024];
printf ("Please enter a line of text, max %d characters\n", sizeof(str));
if (fgets(str, sizeof(str), stdin) != NULL)
{
encrypt(5, str); // What is the value of str after calling "encrypt"?
// add your method call here:
}
}
这是我应该执行的操作:
- 将代码转换为 C++。替换所有 printf、scanf 和 fgets 语句。
- 在“解密”方法中添加代码以解密加密文本。
- 更改代码以使用指针操作而不是数组操作来加密和解密消息。
- 在main方法中,调用“decrypt”方法对密文(str)进行解密。
我不是直接要求作业的答案,但我需要帮助了解我正在犯的错误以及我需要做什么。
这是我在作业的第一部分的尝试:
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
void encrypt(int offset, char *str) {
int i,l;
l=strlen(str);
cout << "\nUnencrypted str = \n%s\n", str;
for(i=0;i<l;i++)
if (str[i]!=32)
str[i] = str[i]+ offset;
cout << "\nEncrypted str = \n%s \nlength = %d\n", str, l;
}
void decrypt(int offset, char *str) {
// add your code here
}
int main(void) {
char str[1024];
cout << "Please enter a line of text, max %d characters\n", sizeof(str);
if (fgets(str, sizeof(str), stdin) != NULL)
{
encrypt(5, str); // What is the value of str after calling "encrypt"?
// add your method call here:
}
}
问题是这就是我要解决的问题,我无法弄清楚需要做些什么不同的事情。
请输入一行文字,最多 %d 个字符 地狱世界
未加密的 str = %s
加密的 str = %s 长度 = %d
在这一点上我什么都不想,我已经花了几个小时在谷歌上搜索并尝试了一些东西,但没有真正到达任何地方,我知道这应该不会超过一个小时。
【问题讨论】:
-
我很难理解你的问题到底是什么。你能解释一下你得到的哪一部分与应该的不同吗?
-
如果您对算法的工作方式有疑问,请在纸上写下几个例子,您会发现解密结果正好相反
-
@1" - 他要你做他的作业。
-
@Matt 我从来没有要求过答案,并明确表示那不是我所追求的。我需要了解我现在是否要在这门课上走得很远。但是@1" 当我使用 cout 替换我的 printf 语句时,我在打印语句中得到的所有内容都是
%s或%d,而不是我的加密或解密字符串。此外,当我用cin.getline替换 frets 语句时,它说 getline找不到函数? -
我相信一切都正常工作并占了上风,除了我的长度不能正确。他们要么只返回 160 或 8 左右的大数字,我猜这只是位。