求助如何用指针让结果(一个字符串中的字母,数字,空格,和其他字符)在主函数输出。
#include<stdio.h>
int main()
{
void count(char str[100]);
char str[100];
gets(str);
count(str);
}
void count(char str[100])
{
int*l,*d,*s,*o;
int letter=0,digit=0,space=0,other=0;
int i;
for(i=0;str[i]!=0;i++)
{
if((str[i]>'A'&&str[i]<'Z')||(str[i]>'a'&&str[i]<'z'))
letter++;
else if(str[i]>'0'&&str[i]<'9')
digit++;
else if(str[i]==32)
space++;
else other++;
}
l=&letter;
d=&digit;
s=&space;
o=&other;
printf("%d,%d,%d,%d",*l,*d,*s,*o);
}
// Q762150.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include<stdio.h>
int main()
{
void count(char str[100], int* l, int* d, int* s, int* o);
char str[100];
gets_s(str);
int l, d, s, o;
count(str, &l, &d, &s, &o);
printf("%d,%d,%d,%d", l, d, s, o);
}
void count(char str[100], int *l, int *d, int *s, int *o)
{
int letter = 0, digit = 0, space = 0, other = 0;
int i;
for (i = 0; str[i] != 0; i++)
{
if ((str[i] > 'A' && str[i] < 'Z') || (str[i] > 'a' && str[i] < 'z'))
letter++;
else if (str[i] > '0' && str[i] < '9')
digit++;
else if (str[i] == 32)
space++;
else other++;
}
*l = letter;
*d = digit;
*s = space;
*o = other;
}
#include<stdio.h>
int main()
{
//void count(char str[100]);
int* count(char str[100]);
char str[100];
gets(str);
//count(str);
int *a;
a = count(str);
printf("%d,%d,%d,%d",a[0],a[1],a[2],a[3]);
}
int* count(char str[100])
{
//int*l,*d,*s,*o;
int letter=0,digit=0,space=0,other=0;
int i;
for(i=0;str[i]!=0;i++)
{
if((str[i]>'A'&&str[i]<'Z')||(str[i]>'a'&&str[i]<'z'))
letter++;
else if(str[i]>'0'&&str[i]<'9')
digit++;
else if(str[i]==32)
space++;
else other++;
}
//l=&letter;
//d=&digit;
//s=&space;
//o=&other;
//printf("%d,%d,%d,%d",*l,*d,*s,*o);
static int a[4] = {letter, digit, space, other};
return a;
}
对于函数返回多个值一般都是使用指针。
1、代码格式不怎么规范,建议仔细参考书中的范例。
2、 函数count的结果是错的,如代码else if(str[i]>'0'&&str[i]<'9')就已经将数字0和9排除了,正确代码是else if(str[i]>='0'&&str[i]<='9'),(不止这一个错误)。
3、指针的用法没错,但是有些多余。
#include <stdio.h>
int* count(char str[100]);
int main()
{
char str[100];
gets(str);
int *a = count(str);
printf("%d,%d,%d,%d",a[0],a[1],a[2],a[3]);
}
int* count(char str[100])//统计字母、数字、空格和其它的字符数,返回指针
{
int letter=0,digit=0,space=0,other=0;
int i;
for(i=0;str[i]!=0;i++)
{
if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))//统计字母
{
letter++;
}
else if(str[i]>='0'&&str[i]<='9')//统计数字
{
digit++;
}
else if(str[i]==32)//统计空格
{
space++;
}
else other++;//统计其它
}
static int a[4] = {letter, digit, space, other};
return a;
}