我有一些令人尴尬的基本问题,我似乎无法找到我能够处理的答案。上次我向你们寻求帮助时,我的运气非常好,所以我希望能重蹈覆辙。我没有任何类型的 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 个字符 hello world
未加密的 str = %s
加密 str = %s 长度 = %d
在这一点上我什么都不想,我已经花了几个小时在谷歌上搜索并尝试了一些东西,但没有真正到达任何地方,我知道这应该不会超过一个小时。