输入一定范围内的字符测试还是可以实现的,但是只要超出某个范围,程序就这样中断,重新运行输入初始范围内的字符串就不行了,还是报错,这是为啥吗,怎么解决啊啊。
#include<stdio.h>
#include<string.h>
#define MAX 1000
int prepare_key(char *key);
int main()
{
char key[MAX];
printf("please input key:\n");
if (scanf("%s", key) == 1)
{
printf("key=%s\n",key);
}
prepare_key(key);
printf("%s", key);
}
int prepare_key(char* key)
{
int i, j;
char* p = key,*q=key;
char biao[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char* s = biao;
//升为大写字母
strupr(key);
//去除重复字母 key={aiai}
//置空格
for (i=0;i<strlen(key);i++)
{
for (j=1; j < strlen(key) - i+1; j++)
{
if (*(p + i) == *(p + i + j))
{
*(p + i + j) = ' ';
}
}
}
//去空格
//为啥一会儿行一会儿不行啊???
for (i = 0; i<strlen(key); i++)
{
q = strchr(key,' ');
strcpy(q, q + 1);
}
//生成密码字母
/* while(*p++!=NULL)
{
s=strchr(biao,*p);
strcpy(s, s + 1);
}
strcat(key, biao);*/
}