gpt4 book ai didi

c++ - 将 C 程序转换为 C++

转载 作者:行者123 更新时间:2023-11-30 21:32:53 26 4
gpt4 key购买 nike

救命啊!我正在尝试找出我们教授给我们的这段代码 -

#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代码为C++ .

  • 将代码添加到“解密”方法以解密加密文本。

  • 更改代码以使用 pointer操作而不是 array加密和解密消息的操作。

  • 在main方法中,调用“decrypt”方法来解密密文(str)。

这是我所能做到的,但我现在几乎陷入困境。特别是因为我没有 C 的背景语言。任何帮助,将不胜感激。

#include <iostream>
#include <string.h>

void encrypt(int offset, char *str)
{
std::cout << "\nUnencrypted str = \n" << str;

char *pointer = str;

while(*pointer)
{
if (*pointer !=32)
*pointer = *pointer + offset;
++pointer;
}

std::cout <<"\nEncrypted str =\n" << str << "\n\nlength = ";
}

void decrypt(int offset, char *str) {

// add your code here
}

void main(void) {

char str[1024];

std::cout << "Please enter a line of text max " << sizeof(str) << " characters\n";

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++ 和 C 中运行。不需要“转换”任何内容,除非有您未告诉我们的特定要求。

您的数组到指针的转换看起来是正确的,尽管我认为数组形式的代码更具可读性。

对于您的 decrypt 方法,您需要编写与 encrypt 方法相反的代码。解决此问题的最佳方法是通过加密运行一些示例文本并检查输出的样子。该函数一次将输入转换为一个字符,因此您应该能够逐字节地将输入映射到输出。有了这些信息,您就可以检测模式并构造一个函数,以在另一个方向上进行转换。

关于c++ - 将 C 程序转换为 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com