当我开始我的程序时,我给出了这样的输入:
EKMFLGDQVZNTOWYHXUSPAIBRCJ 16
AJDKSIRUXBLHWTMCQGZNPYFVOE 4
BDFHJLCPRTXVZNYEIWGAKMUSQO 21
ABCDEFGDIJKGMKMIEBFTCVVJAT
2
MCK
QMJIDOMZWZJFJR
ABC
ESTAMENSAGEMVAISERCIFRADA
程序读取每一行然后执行一些方法,但是当它到达第五行(" 2")时,它会出现错误信息:"没有可用的来源& #34; 0xb7e9f84f" " 对应于该读数的代码如下:
fgets(cadeia1, 31, stdin);
int rPos1 = getRotationPos(cadeia1);
fgets(cadeia2, 31, stdin);
int rPos2 = getRotationPos(cadeia2);
fgets(cadeia3, 31, stdin);
int rPos3 = getRotationPos(cadeia3);
fgets(cadeiaRef, 26, stdin);
r1 = createRotor(r1, cadeia1, rPos1);
r2 = createRotor(r2, cadeia2, rPos2);
r3 = createRotor(r3, cadeia3, rPos3);
ref = createReflector(ref, cadeiaRef);
m->r1 = r1;
m->r2 = r2;
m->r3 = r3;
m->ref = ref;
char* messages;
fgets(messages, 3, stdin); ////////////////////// This is where it crashes
int nMessages = atoi(messages);
我想知道什么是错的:s,无论如何,谢谢!
答案 0 :(得分:3)
您正在将未初始化的指针传递给fgets
,将您的代码更改为
char messages[256]; // or w/e max length you have dictated.
fgets(...);
你最有可能破坏记忆。
答案 1 :(得分:0)
您尚未为邮件分配空间(基于您发布的内容)。您需要在使用之前分配空间(malloc函数)或声明字符数组。
例如:
char messages[3];
fgets(messages,3,stdin);
或
char *messages;
/* ask for memory */
*message = malloc(3);
fgets(messages,3,stdin);
/* do some processing */
/* release the memory back */
free(messages);