- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在用 C 编写凯撒密码程序。我已经编写了该程序,但有时在运行时会出错。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main() {
int size=10,al=0;
int sizek=10,ak=0;
char *str= (char *) malloc(size+5);
if (str == NULL) {
printf("malloc error\n");
return 0;
}
char *strIni=str;
char *str2= (char *) malloc(sizek+5);
if (str2 == NULL) {
printf("malloc error\n");
return 0;
}
char *str2Ini=str2;
//char a,b;
while ((str[al]=getchar())!='\n') {
if (al==size-2){
size=size+10;
char *strR=(char *) realloc(str,size);
if (strR == NULL) {
printf("malloc error\n");
return 0;
}
printf("DDDD\n");
strIni=strR;
}
al++;
}
printf("Or1 %d Al %d\n",strlen(strIni),al );
str[al]='\0';
printf("Af %d Al %d\n",strlen(strIni),al );
while ((str2[ak]=getchar())!='\n') {
if (ak==sizek-2){
sizek=sizek+10;
char *str2R=(char *) realloc(str2,sizek+5);
if (str2R == NULL) {
printf("malloc error\n");
return 0;
}
printf("CCCC\n");
str=str2R;
}
ak++;
}
printf("Or2 %d Ak %d\n",strlen(str2Ini),ak );
str2[ak]='\0';
printf("Af2 %d Ak %d\n",strlen(str2Ini),ak );
printf("Str1 %s\n",strIni );
printf("Str2 %s\n",str2Ini );
int sDup=1;
int dif[strlen(str2Ini)];
int* dup=(int *) malloc(sizek);
int max[(sDup)];
int rot[2]={0,0};
for (int i=0;i<(strlen(str2Ini));i++){ //pokud AA - aa -xy)
if (str2Ini[i]<123&&str2Ini[i]>96 &&strIni[i]<91&&strIni[i]>64){
dif[i]=(int)str2Ini[i]-((int)strIni[i]+6);
} else if (strIni[i]<123&&strIni[i]>96 &&str2Ini[i]<91&&str2Ini[i]>64){
dif[i]=(int)strIni[i]-((int)str2Ini[i]+6);
} else if (strIni[i]<123&&strIni[i]>96 &&str2Ini[i]<123&&str2Ini[i]>96) {
dif[i]=(int)strIni[i]-((int)str2Ini[i]);
} else if (strIni[i]<91&&strIni[i]>64 &&str2Ini[i]<91&&str2Ini[i]>64){
dif[i]=(int)strIni[i]-((int)str2Ini[i]);
}
if (dif[i]<0) {
dif[i]=-1*dif[i];
}
printf("Dif%d: %d\n",i,dif[i]);
}
for (int i=0;i<strlen(strIni);i++) {
int l=0;
for (int j=0;j<sDup;j++) {
if (dif[i]==dup[j]) {
max[j]++;
l++;
break;
}
}
if (l==0){
dup[sDup-1]=dif[i];
max[sDup-1]=0;
max[sDup-1]+=1;
sDup++;
}
}
for (int h=0;h<1;h++){
for (int i=0;i<(sDup-1);i++) {
if(rot[0]>max[i]) {
rot[0]=rot[0];
} else {
rot[0]=max[i];
rot[1]=dup[i];
}
}
}
for (int i=0;i<strlen(strIni);i++){
if (((int)strIni[i]>64 && (int)strIni[i]<91) || ((int)strIni[i]>96 && (int)strIni[i]<123)){
continue;
} else {
fprintf(stderr, "Error: Chybny vstup!\n");/*free(strIni);free(str2Ini);free(dup); */return 100;
}
}
for (int i=0;i<strlen(strIni);i++){
if (((int)strIni[i]>64 && (int)strIni[i]<91) || ((int)strIni[i]>96 && (int)strIni[i]<123)){
if (strlen(strIni)==(strlen(str2Ini))) {
if ((int)strIni[i]+(int)rot[1]>90 && (int)strIni[i]<91) {
strIni[i]=strIni[i]+6+(int)rot[1];
} else if ((int)strIni[i]+(int)rot[1]>122 && (int)strIni[i]<123) {
strIni[i]=(strIni[i]-58+rot[1]);
} else if ((int)strIni[i]>64 && ((int)strIni[i]+rot[1])<91) {
strIni[i]=strIni[i]+rot[1];
} else if ((int)strIni[i]>96 && ((int)strIni[i]+rot[1])<123) {
strIni[i]=strIni[i]+rot[1];
} else {
strIni[i]='#';
}
//printf("%c ",strIni[i] );
} else {fprintf(stderr, "SSError: Chybna delka vstupu!\n");/*free(strIni);free(str2Ini);free(dup);*/ return 101;
}
} else {
fprintf(stderr, "Error: Chybny vstup!\n");/*free(strIni);free(str2Ini);free(dup);*/ return 100;
}
}
str[al]='\0';
printf("Rot: %d\n",rot[1] );
printf("String: %s\n",strIni );
// free(strIni);free(str2Ini);free(dup);
//freeIni, dup
///posun o 42pismen
return 0;
}
我评论释放分配的空间,因为它也给我一个错误。我想稍后再处理。
除了最后一个之外的所有 printfs 都只是为了让我知道这段代码做了什么,以及它在哪里停止。
简单的代码:我用 getchar 在 str 和 str2 中得到 2 个字符串。 (Var al 和 ak 是通常的 i。)然后如果它们大于 (size(10)-2) 我重新分配 size+10。然后我使用字符串并区分字符。然后我寻找最常用的差异并将其用作最终轮换。之后,我只是用计算好的旋转来旋转我的第一个弦。
输入:
qrstuvwxyzABCDEFGHIJKLMNnop
aHcQefghWjdlmnopqostuvTxyYZ
输出:
DDDD
DDDD
Or1 19 Al 27
Af 19 Al 27
错误:
prog: malloc.c:2842: mremap_chunk: Assertion `((size + offset) & (_rtld_global_ro._dl_pagesize - 1)) == 0' failed.
预期输出:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS
最佳答案
在您的第一个循环中,您重新分配了 str
,但没有将新值分配回 str
,尽管您确实访问了什么str
指向后面。如果 realloc
移动它(这是允许的),这将导致问题。与第二个循环中的 str2
类似。
关于c - 使用 malloc 和 realloc 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40952722/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!