| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:寻找指针高手
只看楼主 加入收藏
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:5 
寻找指针高手
//这个程序不报错,但是指针有问题程序功能:从键盘读入一字符串统计其中的空格数字英文字母的个数
#include<stdio.h>
void serch(const char *input,unsigned int *letters, unsigned int *numbers,unsigned int *spaces,unsigned int *others)
{   
while(*input!='\0')
{
if(*input>='0'&&*input<='9')
(*numbers)++;   
else if(*input>='a'&&*input<='z')   
(*letters)++;   
else if(*input==' ')   
(*spaces)++;   
else     (*others)++;   
input++;
}
}
int main(void)
{   
const char *s,b[100];   
unsigned int *letters=0,*numbers=0, *spaces=0, *others=0;//不用unsigned int letters这种形式
s=b;                                                     //我用 unsigned int a;letters=a;也不行
gets( s );                                                
serch(s,letters,numbers,spaces,others);//不许用serch(s,&letters,……)这种形式
printf("%d%d%d%d",*letters,*numbers,*spaces,*others);
return(0);
}

[ 本帖最后由 Spygg 于 2010-5-3 12:17 编辑 ]
搜索更多相关主题的帖子: 指针 
2010-05-03 12:08
wsj3000
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:78
专家分:161
注 册:2009-8-4
收藏
得分:5 
汗~~~
unsigned int *letters=0,*numbers=0, *spaces=0, *others=0;//不用unsigned int letters这种形式
这些东西只申请了保存指针的空间,没有申请指针指向内容的空间,居然还都指向0,程序往0处存东西当然报错了。
居然不想用unsigned int letters,那就用 unsigned int *letters = malloc(sizeof(unsigned int));
最后记得,free(letters);
2010-05-03 12:49
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:20 
unsigned int *letters=0,*numbers=0, *spaces=0, *others=0;这句毛病很大。。。LZ的意思是让这四个指针都指向(int)0的地址吧,可以这样的:
unsigned int t1=0,t2=0,t3=0,t4=0,*letters=&t1,*numbers=&t2, *spaces=&t3, *others=&t4;//让四个指针指向不同的地址
如下所示:
#include<stdio.h>
#include<ctype.h>
void serch(const char *input,unsigned int *letters, unsigned int *numbers,unsigned int *spaces,unsigned int *others)
{
while(*input!='\0')
{
    if(isdigit(*input))
        (*numbers)++;
    else if(islower(*input))
        (*letters)++;
    else if(isspace(*input))
        (*spaces)++;
    else
        (*others)++;
    input++;
}
printf("%d %d %d %d",*letters,*numbers,*spaces,*others);
}
int main()
{
char *s,b[100];
unsigned int t1=0,t2=0,t3=0,t4=0,*letters=&t1,*numbers=&t2, *spaces=&t3, *others=&t4;//不用unsigned int letters这种形式
//我用 unsigned int a;letters=a;也不行
gets( b );
s=b;
serch(s,letters,numbers,spaces,others);//不许用serch(s,&letters,……)这种形式
return(0);
}

[ 本帖最后由 jcslt 于 2010-5-3 13:19 编辑 ]

www.
2010-05-03 13:17
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:5 
unsigned int *letters=0,*numbers=0, *spaces=0, *others=0;//指针指向哪里?

★★★★★为人民服务★★★★★
2010-05-03 13:19
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
回复 3楼 jcslt
嗯,是了,我说我定义四个变量然后把他们的值分别赋给那四个指针还是不行呢,原来还是没有把指针初始化.谢谢了!!!
2010-05-03 13:23
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
回复 2楼 wsj3000
我不想动态分配内存,楼下的方法貌似可以,我试试看,谢谢了
2010-05-03 13:24
快速回复:寻找指针高手
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045437 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved