【发布时间】:2014-04-28 22:43:03
【问题描述】:
我有这个小程序,我需要用它在字母表中的位置替换我输入的任何字符串,因此 a = 01, b = 02, n = 14, 7 = 07... 例如,如果我输入 ab36c 作为输出我应该得到 01 02 03 06 03
当我在另一台计算机上编译它时一切正常,现在当我在我的电脑上运行它时程序崩溃,我仍然可以输入我的字符串,但是当我按 Enter 获取结果(输出)时,它显示 program.exe 有停止工作。这里有什么问题?
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
#include <ctype.h>
//#define SIMBOLU_SKAITS 100
int main(){
char text[200];
char *s2;
char simboli[36]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'};
char morze[36][3]={"01","02","03","04","05","06","07","08","09","10","11","12","13",
"14","15","16","17","18","19","20","21","22","23","24","25","26",
"00","01","02","03","04","05","06","07","08","09"};
int i, j, garums;
gets(text);
garums=strlen(text);
for (i=0;i<=garums;i++){
for (j=0; j<=36;j++)
if( text[i]==simboli[j]){
strcat(s2,morze[j]);
strcat(s2," ");
break;
}
}
puts(s2);
scanf("%c");
}
【问题讨论】:
-
你真的像这样格式化你的代码吗?
-
别忘了删除你的指针。这是一个很好的做法,也被推荐。不确定这是否可以解决您的问题,但您应该解决它。
-
@AlexBarac:他应该删除哪个指针??他没有在这个程序中分配任何东西(顺便说一句,这是他问题的根源之一。
-
@MichaelWalz 我没有注意到他没有进行任何分配。感谢您的评论,下次我会更仔细地阅读代码。