| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:求助 这个程序错在哪儿啊
取消只看楼主 加入收藏
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
结帖率:88.89%
收藏
 问题点数:0 回复次数:8 
求助 这个程序错在哪儿啊

以下是一个将用户输入的由数字字符和非数字字符组成的字符串中的数字提取出来的一个程序。例如:输入“skk345klja98lkd156”,则产生345 98 156 。
这是书上的例子。因为有错,我修改了一些。但是还有两个错误。在程序中注明了。
请大侠指教。
先谢谢了哈。

对了,我还留了个附件,是*.c格式的这个文件。

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define len 256 /* 原例子是#define LEN 256 */
int getline(char *s,int len); /*这里出现了声明语法错误*/

void main()
{
char line[len],b[20],*ptr1,*ptrb; /* 原例子是char line[LEN],b[20],*ptr1,*ptrb; */
int n=0,j,a[50];
clrscr();
getline(line,len);
ptr1=line;
while(*ptr1!='\0')
{
ptrb=b;
for(j=0;*ptr1>='0'&&*ptr1<='9';ptr1++,ptrb++,j++)
*ptrb=*ptr1;
if(j>0)
{
*ptrb='\0';
*(a+n)=atoi(b);
n++;
}
if(*ptr1!='\0')
ptr1++;
}
printf("output number:\n");
for(j=0;j<n;j++)
printf("%d\n",*(a+j));
getch();
}


int getline(char *s,int len) /*这里又出现了声明语法错误*/

{
int c;
printf("input number:");
char *p=s;
while(--len>0&&(c=getchar())!='\n') /* len 是常量, 怎么能用 --len 了?*/
*s++=c;
*s='\0';
return (s-p); /*请高手告诉我这两个指针相减表示的是什么啊? 这里我看不懂啊,请指教啊*/
}

搜索更多相关主题的帖子: include 字符串 用户 
2007-04-16 16:05
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
对了。我用的是turboC2.0 ,老是编译通不过。请高手指教啊,在线等啊。
2007-04-16 16:08
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 

谢谢了。请问3楼的老哥,书上的原例就是用的大写:

第四行: #define len 256 /* 原例子是#define LEN 256 */
第八行: char line[len],b[20],*ptr1,*ptrb; /* 原例子是char line[LEN],b[20],*ptr1,*ptrb; */

可是这样出了更多的错啊?
具体的我记不清了。请能不能帮我把这个程序调通啊?

谢谢了。

2007-04-17 08:53
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
请问4楼的老哥:我可不可以这样理解:返回两指针相减的值都是返回字符串的长度呢?


2007-04-17 08:55
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
谢谢了,再一次向阅读、关心、回复的高手们致谢!

昨天因为临时出差了,所以现在才回来看。
2007-04-17 08:58
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 


谢谢。我明白你讲的两指针相减的意思了。

但是,哥啊。我还是晕了。因为我在TurboC2.0中还是没有通过。但是我还是先谢谢你了。你能不能再帮我分析一下。以下是出错信息:


compliting C:\qufen.c:
error C:\tc\qufen.c: 40: Expression syntax in function getline
error C:\tc\qufen.c: 44: undefined symbol 'p' in function getline
Warning C:\tc\qufen.c: Non-portable pointer conversion in function getline



我快疯了啊。
是不是我的编译器有问题哦?

谢谢。
2007-04-17 10:21
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
我有课了。中午我去试试,我再想想。谢谢你哈。完成任务后我再答复。
2007-04-17 11:10
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
高手就是高手!

10楼的老哥啊,谢谢你哈,照那么一改,问题全解决了,编译通过!!!!!

谢谢,谢谢,谢谢。


希望能和你做朋友。

thanks a lot!



可是这是为什么啊???
2007-04-17 12:57
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
谢谢你。我明白了:在c98标准中,函数声明部分和执行部分必须要分开, 而tc2。0是基于c98标准的。
在C99中,声明只要在执行之前就可以。而Cfree3.5是基于C99标准的。是这样吧?


谢谢你。

很想和你做朋友。
能告诉我你的QQ吗?我的名字是赖高。QQ453287911
在线等哈。

2007-04-17 13:12
快速回复:求助 这个程序错在哪儿啊
数据加载中...
 
   



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

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