- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我写了一个 rot13.c 程序,但我可以在 rot13_translate_string 内的循环中告诉我一些东西导致程序只打印出空行。
有什么想法吗?谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char rot13_translate_character(char c)
{
if( 'A' <= c && c <= 'M' )
{
return c + 13;
}
else if( 'N' <= c && c <= 'Z' )
{
return c - 13;
}
else if( 'a' <= c && c <= 'm' )
{
return c + 13;
}
else if( 'n' <= c && c <= 'z' )
{
return c - 13;
}
else
{
return c;
}
}
char *rot13_translate_string(const char *str)
{
int len = strlen(str);
char *translation = calloc(len, sizeof(char));
int i;
do //****HERE IN THIS SECTION
{
/* Translate each character, starting from the end of the string. */
translation[len] = rot13_translate_character(str[len]);
len--;
} while( len < 0 ); //<
return translation;
}
这是主要部分(同一文件的一部分)- my for i = 1 的条件是否正确?
int main(int argc, char **argv)
{
if( argc < 2)
{
fprintf(stderr, "Usage: %s word [word ...]\n", argv[0]);
return 1;
}
/* Translate each of the arguments */
int i;
for( i = 1; i < argc; i++) //*****IS this right?
{
char *translation = rot13_translate_string( argv[i] );
fprintf(stdout, "%s\n", translation);
}
return 0;
}
最佳答案
正如 Janis 所指出的那样,控制是在循环do ... while 上进行的。应该是
while( len >= 0 );
“while”循环 在控制表达式为真 时运行(并在表达式变为假时终止)。您在循环之前定义变量 len 并且它不能是 <0
.
所以你永远不会真正进入循环。
由于 fprintf(stdout, "%s
,您为每个输入词获得一行<强> \n
", translation);
行,为每个(空)字打印一行(\n
)。
在其他语言中,例如在 Pascal 中,有“repeat until”循环构造,它继续运行直到控制表达式为真,并且只有在那之后它改变它终止。
在这种情况下,您可以使用 <0
的条件。 .在 C 中,为了遵循相同的逻辑,您可以使用 while 循环 并否定条件。在你的情况下
} while (! (len < 0) );
关于memory - Rot13 实现 : error in translate_string function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29363712/
我有一个小网站,我想在其中混淆一些文本,以保护不小心不及时阅读它的用户。 很像 imdb 上的关键词,你必须滚动才能显示它们。 我认为如果文本被标记,这将是一种很好的交互式方式来显示文本。 例子: H
目前,我正在编写一个程序,该程序使用 Java 对给定字符串执行 ROT-1 直到并包括 ROT-25。在我的研究之初,我发现this代码: public class Rot13 { public s
******************************************************************************* ROTS v1.05 Rem
我知道如何使用 *****.GetActiveObject(ProgId),但问题是我使用此代码行的几个应用程序没有添加到 ROT,即使它们已经打开,我得到HRESULT 错误。但是,如果我单击另一个
C++ 中字母的旋转 13 次换位未按我预期的方式工作。所有的字母首先都是大写的,所以只有 ASCII 数字 65-90 是相关的。如果字母超过 77,我会减去以回绕到“A”。 for (int j
我有这个方法可以测试我是否成功获得ROT: void func() { IRunningObjectTable *rot; qDebug() future = QtConcurren
基本上我必须使用 rot-13 将输入的字符数组转换为结果数组。所以,这就是我想做的事情:使用 for 循环,然后在 for 循环内使用条件来确定是否添加或减去 13 个位置。但我遇到的问题是编写 f
我知道有很多方法可以编写 ROT(n) 函数。但我不想有一些带有字符的表。 所以,我尝试编写一个带有解码器的简单 ROT(n),作为练习项目。编码功能工作正常。但解码器不断将“a”更改为“z”。 有人
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我需要获取正在运行的对象的特定实例(来自 C#)。可能有此应用程序的多个实例正在运行。不幸的是,此应用程序始终以完全相同的名称(例如,“!{DED89DB0-45B6-11CE-B307-080036
我已经对其进行了很多更改。而且,情况只会变得更糟。我不明白我做错了什么。从A-M,加13。从M-Z,减13。以前,至少我收到回信。现在,它们是符号。 import javax.swing.JOptio
我尝试实现 Rot13 并使其尽可能小,这是我目前的结果: if ( (c >= 'A') && (c = 'a') && (c = 'A') && (c = 'a') && (c = 'A'
我的代码多年来一直用于 PDF、HTML 文档和 XBRL 文档。从 IE 中的 BHO 或 Reader 中的 Adobe 插件调用代码。它在 ROT 中注册一个名字对象,并创建一个信号事件。
我想要一个函数,当传递一个只包含字母的字符串时,将字符串中的每个字母通过字母表旋转 X 个字符,其中 X 是函数的参数。著名的例子是当 X=13 时,称为 ROT-13 函数 <- ROTx(str,
我正在使用rot-js绘制带有六边形的网格,并希望将三 Angular 形和其他形状添加到 canvas 。我尝试过对 display.getContainer() 采取行动但这不起作用。需要做什么才
HZROT.cpp: #include "HZROT.h" std::string ROTEncode(std::string instring, int rot) { std::string
作为标准 Java 库之一的一部分,是否已经有 rot13() 和 unrot13() 实现?还是我必须自己编写并“重新发明轮子”? 它可能看起来像这样: int rot13 ( int c ) {
我正在尝试使用 R 对我的数据进行 PCA 分析,我发现 this nice guide , 使用 prcomp和 ggbiplot .我的数据是两种样本类型,每种类型具有三个生物学重复(即 6 行)
我有两个用 C++ 和 ATL 编写的 COM 对象。有一个图书馆,我知道他们的 IID 和 CLID。 我找不到在两个简单 COM 对象之间进行这种简单通信的示例。如何创建 IMoniker 以及如
我将网站上的所有电子邮件地址编码为 ROT-13,然后使用 Javascript 对地址进行解码(以避免垃圾邮件)。然而,在 IE 7 或 8 中,解码完全不起作用。在 Chrome、Safari、F
我是一名优秀的程序员,十分优秀!