首先,我要感谢大家为我所做的一切,无论他们是否知道。我是第一次海报长期潜伏者。
我正在开始一个基于 C 及其几个变体的新课程。问题是它假设你至少有 C++ 的经验,不幸的是我只学了几个学期的 Java 和 Mips。我现在正在努力学习 C,没有任何书籍或课程计划。我使用 Google 度过了第一个月。但是我今天的问题似乎无法解决,虽然我知道这是基本的,但我希望在理解我的作业中代码的工作方面得到一些帮助。
教授为我们提供了以下代码:
#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 分钟前还感到紧张的一些非常基本的概念有了更牢固的把握。