まず、知っているかどうかにかかわらず、私のためにこれまでにしてくれたすべての人に感謝したいと思います。私は初めてのポスターの長年の潜伏者です。
C とそのバリエーションのいくつかに基づいた新しいクラスを開始しています。問題は、少なくとも C++ の経験があることを前提としていることです。残念ながら、私は Java と Mips を数学期しか受けていません。私は今、C を学ぶのに苦労しています。本も授業計画もありません。Google を使用して最初の 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) {
}
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:
}
}
したがって、宿題の質問はコードにリストされていますが、明確にするために、それは私が求めているものではありません。このプログラムがこれまでどのように機能しているかを理解したいと思います。
具体的には:
なぜ書くのか
char str[1024]
正確には何をしているの
if (fgets(str, sizeof(str), stdin) != NULL)
ですか?まともな考えはあるが、その背後にある理由が分からない。
3.そして最後に(願わくば)
if (str[i]!=32)
str[i] = str[i]+ offset;
str[i]
なぜ私たちは32 に等しくないことを心配しているのですか?
質問が多くて申し訳ありませんが、本当に理解したいと思っています。
また、この時点で今学期の残りについてかなり心配しているので、C の素晴らしい読み物を知っている場合はお知らせください。
編集:
私に答えてくれたみんなに本当にありがとうと言いたいです。残念ながら、私はあなたが私を助けてくれたことを認めるために、すぐにもっと質問を続けたいと思っている人の一人ではありません. ですから、私が直接感謝したり、コメントを返したりしなかった皆さん、どうもありがとうございました。ほんの 30 分前には緊張していた非常に初歩的な概念のいくつかを、今ではよりしっかりと把握できています。