以下是一个将用户输入的由数字字符和非数字字符组成的字符串中的数字提取出来的一个程序。例如:输入“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); /*请高手告诉我这两个指针相减表示的是什么啊? 这里我看不懂啊,请指教啊*/
}