C与指针上的一道练习题
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int prepare_key(char *key)
{
char list[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/*
**下面要做的是除去key中重复的字母;
*/
char list_1;
char temp;
int count = 0,i = 0;
while(i <= strlen(key))
{
if(strchr(temp,*(key + i)) == NULL)
{
*(temp + count) = *(key + i);
count += 1;
}
i++;
}
*(temp + count + 1) = '\0';
/*
**以上除去了key中的重复字母,将新的字符串放在temp中;
*/
int j = 1;
while(j <= strlen(temp))
{
*strpbrk(list,temp) = '*';
j ++;
}
/*
**把list中的temp有的字符变成'*';
*/
i = 0;
j = 0;
while(i <= strlen(list))
{
if(isalpha(*(list + i)))
{
*(list_1 + j) = *(list + i);
j++;
}
i++;
}
*(list_1 + j) = '\0';
/*
**list中的'*'被删除后形成新的字符数组list_1;把temp复制到key中,再把list_1接到key后面;
*/
strcpy(key,temp);
strcat(key,list_1);
return 0;
}
int main()
{
char key = "PENGXIAOLONG";
prepare_key(key);
printf("%s\n",key);
return 0;
}
C与指针 190页的第12题,我简化了,但这个程序一运行就死。大神们哪帮个忙~~
呵呵我知道;了我的temp和list_1没初始化只要随便给他们初始化一下就好了 {:5_99:}
你可以调试出来的嘛。。。
temp="",list_1=""
初始化就行了。 本帖最后由 越野e族 于 2012-5-8 07:58 编辑
...原来你早就知道了。囧,没看回复,直接回复你了{:5_100:}
楼主,你试下初始化temp[]=“” list_1[]="",看下结果如果。就是不标字符串长度看看。应该有意想不到的收获。
越野e族 发表于 2012-5-8 07:56 static/image/common/back.gif
...原来你早就知道了。囧,没看回复,直接回复你了
我去试试。不过我是在发了贴之后才发现问题的 越野e族 发表于 2012-5-8 07:56 static/image/common/back.gif
...原来你早就知道了。囧,没看回复,直接回复你了
只打印 了一个字符P ,是不是因为没定义长度,所以默认长度是'\0'占的那一个字节? 现在改汇编了,看不懂C了 学习,学习了 {:1_1:}
页:
[1]