求大神赐教计算C语言数组长度

Ccout 2011-08-09 10:18:52
就是调用什么函数呢?不要那个循环一个个的计算!!
一直没搜到,所以请大家帮忙下、、

/*本程序实现一种C语言中“{”“}”的匹配问题
如果不匹配则提示出错 */
#include <stdio.h>
#include <string.h>
#define max 10000 //怎样计算已经输入的字符个数呢??求大神赐教、、不胜感激、、、

int main()
{
char input[max];
char *p;
printf("请输入你的C程序:\n");
while(gets(input)!=NULL);

p=input;

int m = 0; /*记录‘{’出现的次数*/
int k = 0; /*记录‘}’出现的次数*/
for (int i=0;i<max;i++)
{
if (*p=='{')
m+=1;

if (*p=='}')
k+=1;
if (k>m)
{
printf("程序错误!\n");
break;
}
p++;


}

if (m==k)
printf("程序正确!\n");
else
printf("程序错误!\n");


return 0;



}
...全文
182 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 icemornings 的回复:]

虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:
C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


----------------------
附strlen用法

strlen
语法:
#include <string.h>
size_t strlen( ch……
[/Quote]
++
就用这个方法。
白云飘飘飘 2011-08-10
  • 打赏
  • 举报
回复
用堆栈
shijiemoxing 2011-08-10
  • 打赏
  • 举报
回复
学习
hongwenjun 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hongwenjun 的回复:]

引用 9 楼 hu7324829 的回复:

引用 1 楼 icemornings 的回复:
虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:

C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


----------------------
附strlen用法
……
[/Quote]

for (size_t i=0; i != strlen(str) ; i++ )
这样写,效率还高一点点
#include <iostream>
#include <string.h>

using namespace std;
int test(const char *str) //execution time : 2.703 s
{
for (size_t i=0; i != strlen(str) ; i++ ) {
;
}
return strlen(str);
}

int test2(const char *str) //execution time : 2.859 s
{
size_t ret=strlen(str);
for (size_t i=0; i != ret ; i++ ) {
;
}
return ret;
}

int main()
{
char str[]="虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下";
int x = test(str);
for (size_t i=0; i != 100000000 ; i++ ) {
x = test(str);
}

cout << x;
return 0;
}
yan123wwwy 2011-08-10
  • 打赏
  • 举报
回复
对于连续存储的一维数组,即使不用循环而调用其它函数求长度,被调用函数内部也是会使用循环的,建议楼主还是循环吧
hongwenjun 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hu7324829 的回复:]

引用 1 楼 icemornings 的回复:
虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:

C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


----------------------
附strlen用法

strlen
语法:
#include ……
[/Quote]



这个编译器会优化的,放 for 里会 , 可以少定义一个变量
可能实际应用效率还会高点
hu7324829 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 icemornings 的回复:]
虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:

C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


----------------------
附strlen用法

strlen
语法:
#include <string.h>
size_t str……
[/Quote]

strlen()别放在for循环里面,不然每次循环都得执行一次.
int i, len = strlen(str);
for(i = 0;i < len;i++)
AnYidan 2011-08-10
  • 打赏
  • 举报
回复
顶1楼
l369294289 2011-08-10
  • 打赏
  • 举报
回复
strlen
5t4rk 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pathuang68 的回复:]

引用 1 楼 icemornings 的回复:

虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:
C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


----------------------
附strlen用法

strlen
语法:
#include ……
[/Quote]
+++
呵呵 顶
东莞某某某 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ccout 的回复:]

引用 1 楼 icemornings 的回复:

虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:
C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


----------------------
附strlen用法

strlen
语法:
#include ……
[/Quote]

你那是sizeof()
Ccout 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 icemornings 的回复:]

虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:
C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


----------------------
附strlen用法

strlen
语法:
#include <string.h>
size_t strlen( ch……
[/Quote]这个strlen(str)不是计算指针str的长度的嘛?也就是4、、、计算不了数组里已经存了多少个字符吧??
Ccout 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hongwenjun 的回复:]

引用 10 楼 hongwenjun 的回复:

引用 9 楼 hu7324829 的回复:

引用 1 楼 icemornings 的回复:
虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:

C/C++ code

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}


-------……
[/Quote]基本上知道了、、谢谢了、、哈哈
icemornings 2011-08-09
  • 打赏
  • 举报
回复
虽然不知道楼主说的是什么意思,但是还是把自己的想法写一下:

/* for语句改成这样 */
for (int i = 0; i < strlen(input); i++)
{
}

----------------------
附strlen用法

strlen
语法:
#include <string.h>
size_t strlen( char *str );
功能:函数返回字符串str 的长度( 即空值结束符之前字符数目)。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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