C 指针和数组 为什么就是不输出???

来源:百度知道 编辑:UC知道 时间:2024/06/01 09:59:29
程序读入字符串,将数字合并在数组array中,并输出最大数和最小数.用int find(char string[],int elementSize,int array[],int arraySize,int *maxPtr,int *minPtr)合并并返回array中数字的个数.

#include<stdio.h>
#include<stdlib.h>
#define SIZE 100

int find(char [],int,int [],int,int *,int *);

main()
{
char string[SIZE],ch;
int i=0,elementSize,array[SIZE]={0},max=0,min=0,*maxPtr,*minPtr,int_of_array;

printf("请输入字符串:\n");
scanf("%c",&ch);

while(ch!='\n')
{
string[i]=ch;
scanf("%c",&ch);
i++;
}
string[i]='\0';

maxPtr=&max;
minPtr=&min;

int_of_array=find(string,i,array,SIZE,maxPtr,minPtr);

printf("字符串中连续数字合并后得到的整数有:\n");
for(i=0;i<=int_of_array-1;i++)

1、max的初值应该小些,min的初值应该大些,你这里给min=0就不合适了

2、那个find函数中的while中的逻辑有点问题。我是这么改的:
while(i<elementSize)
{
if(string[i]>='0' && string[i]<='9')
{
*(array+j)=*(array+j)*10+(string[i]-'0');

if(string[i+1]<'0' || string[i+1]>'9') //注意这里是逻辑或
{
j++;
}
i++;
}
else
{
i++;
}
}

3、关于用指针返回
改变形参这个变量的值是不会返回的。
指针也是一个变量,只改变指针变量的值(即地址)自然也是不会返回的。
要返回的话是要改变指针所指向的变量的值。
所以find函数的后半部分可改为:
for(i=0;i<=j-1;i++)
{
if(array[i]>*maxPtr)
*maxPtr=array[i]; //改
if(array[i]<*minPtr)
*minPtr=array[i]; //改
}
return j;

4、对比的看下下面两组替换,也许可以加深你对指针用于返回的理解
int_of_array=find(string,i,array,SIZE,maxPtr,minPtr);
可用下面的等价替换:
int_of_array=find(string,i,array,SIZE,&max,&min); //maxPtr==&max

printf("整数中最