崩溃中。。。。关于字符串指针问题

conowen 2010-06-04 09:30:57
写出一个具有4个参数的函数myFunc(), 第1个参数为指向字符串的指针, 其后3个参数分别为函数返回的该字符串所包含的大写字母、小写字母和数字字符的个数。然后编写一主函数,从键盘输入一字符串,并调用myFunc()函数求出并输出该字符串中的大、小写字母和数字字符的个数。



求解
完整的源代码
...全文
324 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunlp007 2010-06-21
  • 打赏
  • 举报
回复

#include<iostream.h>
void myfunc(char *p,int &x,int &y,int &z)
{
x=0;
y=0;
z=0;
while(*p)
{
if (*p>='A'&&*p<='Z')
{
++x;
}
else if (*p>='a'&&*p<='z')
{
++y;
}
else if (*p>='0'&&*p<='9')
{
++z;
}
++p;
}
}
int main()
{
int i=0,j=0,k=0;
char s[100]="asgkahgkljglkaklj123533DJSLFJLHFSDLKJGKLDS";
myfunc(s,i,j,k);
cout<<i<<" "<<j<<" "<<k<<endl;
return 0;
}
编译通过
sinmeng 2010-06-10
  • 打赏
  • 举报
回复
big = big + 1;
big += 1;
big++;
这三个最终效果一样的,都是把big的值加1
为啥你和1楼反的,你去看下啥是引用吧
filec75 2010-06-10
  • 打赏
  • 举报
回复
友情up
kkbel 2010-06-10
  • 打赏
  • 举报
回复
都写的很好很正确
winner8080 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 windhaunting 的回复:]
这个程序的函数的 参数如果不用引用,直接按值传递就不行了呢?


引用 1 楼 knop1027 的回复:

C/C++ code

#include <stdio.h>



void count(char *line,int &amp;big,int &amp;little,int &amp;num)
{
while(*line)
{
if……
[/Quote]

当然不行了.这个函数后面的参数是输出参数,不是输入参数.
这里必须用引用或者指针,当然在C语言中只能用指针,建议用const 指针.
fly_over0x25A 2010-06-07
  • 打赏
  • 举报
回复
楼主,这个可以运行。可否有人解释下为什么我写的和一楼的*和&是相反的呢?还有big+=1和big++的区别。
#include <stdio.h>
void count(char line[],int *big,int *little,int *num)
{
int i=0;
while(line[i])
{
if(('A'<=line[i])&&(line[i]<='Z'))
*big+=1;
else if(('a'<=line[i])&&(line[i]<='z'))
*little+=1;
else if(('0'<=line[i])&&(line[i]<='9'))
*num+=1;
i++;
}
}


int main()
{
int big=0,little=0,num=0;
char a[100] = "AAAbbb111";
count(a,&big,&little,&num);
printf("big=%d,little=%d,num=%d\n",big,little,num);
return 0;
}
ForestDB 2010-06-07
  • 打赏
  • 举报
回复
顶了。
melibaobei10 2010-06-06
  • 打赏
  • 举报
回复
楼上的。你的已经成为死循环了吧。
fly_over0x25A 2010-06-05
  • 打赏
  • 举报
回复
我也觉得很纳闷,为什么我对& 和* 指针操作和你们是反的?
楼主运行的错误解决了,但为什么计数器最后输出的时候没改变。不是已经定义了是static变量了吗?
#include <stdio.h>
void count(char line[],int big,int little,int num)
{
int i=0;
while(line[i])
{
printf("%c ",line[i]);
if(('A'<=line[i])&&(line[i]<='Z'))
big++;
else if(('a'<=line[i])&&(line[i]<='z'))
little++;
else if(('0'<=line[i])&&(line[i]<='9'))
num++;
i++;
printf("%d",big);
printf("%d",little);
printf("%d\n",num);

}
}


int main()
{
static int big=0,little=0,num=0;
char a[100] = "AAAbbb111";
count(a,big,little,num);
printf("big=%d,little=%d,num=%d\n",big,little,num);
return 0;
}
Oo纳兰筱DoO 2010-06-05
  • 打赏
  • 举报
回复
不会呀,要是选择C/C++ Header File,文件后缀名选.c就会出现那些错误;正常C++ Source File,不会出现问题呀
maple_zhj 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knop1027 的回复:]
C/C++ code

#include <stdio.h>



void count(char *line,int &big,int &little,int &num)
{
while(*line)
{
if(('A'<=*line)&&(*line<='Z'))
big++;……
[/Quote]


就是这个了。
向立天 2010-06-04
  • 打赏
  • 举报
回复
双击error就可以定位到错误行
你所有的错误都在第15行(1.c(15))
你检查一下这里
conowen 2010-06-04
  • 打赏
  • 举报
回复
说一下,我新建的project是
Win32 Console Application

新建的file是
C++ Source File

谢谢大家的热心帮助


conowen 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xianglitian 的回复:]
1楼代码我用6.0试了一下
没有任何问题
你再检查一下吧
另外
我觉得论坛里大家就是提一个思路
没有人有义务为你做出一个完整的作业
而且我相信提供代码的人肯定是测试编译通过的
所以你应该多自己思考
不要总是想坐享其成
[/Quote]

谢谢指教,不过我这边编译真的是有问题
难道和系统或者软件有关

另外没有独享其成,一直在看书和百度

指针这章,老师两三节课就把它给讲完了

还不是很熟
向立天 2010-06-04
  • 打赏
  • 举报
回复
1楼代码我用6.0试了一下
没有任何问题
你再检查一下吧
另外
我觉得论坛里大家就是提一个思路
没有人有义务为你做出一个完整的作业
而且我相信提供代码的人肯定是测试编译通过的
所以你应该多自己思考
不要总是想坐享其成
amekin 2010-06-04
  • 打赏
  • 举报
回复
题目 没有看清 呵呵
我返回的是所有的 大写字符 和 小写字符 了。。
没有返回个数
liutengfeigo 2010-06-04
  • 打赏
  • 举报
回复
VC 。。。我好像就用它写了4个~
amekin 2010-06-04
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>

void myFunc(char *szpSouceStr, char *szpUpper, char *szLower, int &nCnt)
{
while(*szpSouceStr)
{
//
if((*szpSouceStr >= 'A') && (*szpSouceStr <= 'Z'))
{
(*szpUpper++) = *szpSouceStr;
}
else if((*szpSouceStr >= 'a') && (*szpSouceStr <= 'z'))
{
(*szLower++) = *szpSouceStr;
}
else if((*szpSouceStr >= '0') && (*szpSouceStr <= '9'))
{
nCnt++;
}

szpSouceStr++;
}

}

int main(void)
{
char szStr[16] = "A6BdCefGhi12345";
char szUpperAlpher[16] = {0};
char szLowerAlpher[16] = {0};
int nCount = 0;

myFunc(szStr, szUpperAlpher, szLowerAlpher, nCount);

printf("UpperAlpher : %s\n", szUpperAlpher);
printf("LowerAlpher : %s\n", szLowerAlpher);
printf("Count : %d\n", nCount);
return 0 ;
}
conowen 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xianglitian 的回复:]
什么错误?
你什么编译环境?
6.0?
[/Quote]
嗯,就是6.0

错误信息如下

--------------------Configuration: 1 - Win32 Debug--------------------
Compiling...
1.c
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.c(15) : error C2143: syntax error : missing ')' before '&'
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.c(15) : error C2143: syntax error : missing '{' before '&'
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.c(15) : error C2059: syntax error : '&'
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.c(15) : error C2059: syntax error : ')'
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.c(34) : warning C4013: 'count' undefined; assuming extern returning int
Error executing cl.exe.

1.obj - 4 error(s), 1 warning(s)
向立天 2010-06-04
  • 打赏
  • 举报
回复
什么错误?
你什么编译环境?
6.0?
加载更多回复(8)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧