恥ずかしいほど初歩的な質問がいくつかありますが、処理できる答えを見つけることができないようです。前回、皆さんに助けを求めたときは、信じられないほどの幸運がありましたので、繰り返していただきたいと思います。私は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ステートメントを置き換えます。
- 「decrypt」メソッドにコードを追加して、暗号化されたテキストを解読します。
- メッセージの暗号化と復号化に配列操作の代わりにポインター操作を使用するようにコードを変更します。
- 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文字hellow world
暗号化されていないstr=%s
暗号化されたstr=%s長さ=%d
この時点で何もできません。私はすでに数時間グーグルで物事を試しましたが、実際にはどこにも行かず、これは1時間以内で済むはずです。