프로그램에 문제가 있습니다. 메신저는 간단한 알파 화 프로 그램을 더미 alfabeth와 함께 만들지 만 char 배열에 액세스하려고하면 위치에 액세스 할 수 없습니다. 어떻게됩니까? 만약 int_type 대신에 size_t 타입과 관련이 있다면 나는 모른다. 당신은으로 mess
를 선언하는왜 EXC_BAD_ACCESS가 메모리에 액세스 할 수 없습니까?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
static char * createAlfa(void);
char * codify(char *mess, char *alfa);
int
main(void)
{
char *alfa=createAlfa();
printf("write your mess to codify: \n");
char mess[]="";
scanf("%s", mess);
char *code=codify(mess, alfa);
printf("your codified message is: %s\n", code);
return 0;
}
static char *
createAlfa(void)
{
char *codealfa=malloc(sizeof(char)*27);
srand((unsigned int)time(NULL));
int i, ran;
for(i=0; i<26; i++)
{
codealfa[i]='A'+i;
if((ran=rand()%26)<i)
{
codealfa[i]=codealfa[ran];
codealfa[ran]='A'+i;
}
}
codealfa[26]=0;
return codealfa;
}
char *
codify(char *mess, char *alfa)
{
size_t len=strlen(mess);
char *code=malloc(sizeof(char)*len);
int i;
for(i=0; i<len; i++)
{
int pos=(int)(toupper(mess[i])-'A'); //pos is behaving correctly, first loop is
//it is 15 when i write "potato"
code[i]=alfa[pos]; //EXC_BAD_ACCESS, Could not access memory
}
code[i]=0;
return code;
}
오류가 발생하면 i 및 pos를 작성 했습니까? –
힌트 : 루프가 종료 될 때'i'의 값은 얼마입니까? 이것이'malloc'으로 만든 배열 범위 내에 있습니까? –
다음 위치에서 하나씩 오류가 있습니다 :'size_t len = strlen (mess); char * code = malloc (sizeof (char) * len);'codify()'에 있습니다. null에 충분한 공간을 할당하려면 1을 더해야합니다. 경고 : 나는 '감자'를 입력하고 'codified'출력 POTATO를 한 번 받았다. 그것은 아주 좋은 암호화가 아닙니다. –