51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1129|回复: 19
打印 上一主题 下一主题

C小问题!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-7-25 22:08:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stdio.h>
main()
{
    int i;
    char string[]={};
    for (i=0;i<=4;i++)
    {
        scanf("%c",&string);
    }
    printf("%s\n",string);
}

实现效果是输入5个字符后,输出这5个字符

执行有两中情况?(←代表回车)
1)a←
   b←
   c←
还没等我输输入第四个值,已经输出结果了
   a
   b
   c

2)abcde←
返回abcde  (正常)

补充问题:如何计算一个未定义长度的数组,在添加元素后的数组长度(或则怎么计算一个数组里的字符长度)


[ 本帖最后由 lhjtc8257 于 2007-7-25 22:16 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-7-25 22:10:32 | 只看该作者
回车也会被认为是字符读入,所以一起打出了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-7-25 22:12:53 | 只看该作者
补充问题:如何计算一个未定义的数组,在添加元素后的数组长度(或则怎么计算一个数组里的字符长度)
LZ问得不够明确,什么叫未定义?是没有声明还是没有初始化?如果要自算长度,字符串本来就提供函数的,仅限于字符串
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-7-25 22:19:57 | 只看该作者
不好意思没说清楚!
定义一个数组(不定长度的) char string[]={};
向数组内输入内容:abcdef
如何求数组的长度?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-7-25 22:24:36 | 只看该作者
用Strlength(s)返回长度 sizeof应该也可以
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-7-25 22:25:36 | 只看该作者
这个数组就是一个字符串,C语言中字符串都是存在一个字符数组中的,也就是char的数组,直接可以用C提供的函数查长度,具体哪个记不清,好像是什么strlength的,LZ可以查下资料。
实在不行也可以自己写一个,因为字符串都是以'\0'结尾的,可以用个循环,设置个信号量判断。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-7-25 22:31:00 | 只看该作者
5楼那两个方法都可以,不过第一个函数好像只能用在字符串上,也就是char型数组上。第二个函数对任何的变量都能用,包括结构体,不过计算字符串可能要减一,因为最后有'\0',LZ可以试试看。
其实5楼我认识他,sdlkfj6
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-7-25 22:35:25 | 只看该作者
StrLength需要包含string.h头文件 似乎。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-7-25 22:36:34 | 只看该作者
是的,我敢肯定

PS:其实8楼的,我认识他
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-7-25 22:41:06 | 只看该作者
Strlength(s)如何使用的啊,是不是要使用什么头文件啊!(显示未定义)

#include <stdio.h>
main()
{
    int j,k;
    char i[]={};
    for (j=0;j<=6;j++)
    {
        scanf("%c",&i[j]);
    }
    printf("%s\n",i);
    k=sizeof(i);
    printf("%d\n",k-1);
}
显示-1,请指教怎么会事
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-7-25 22:42:44 | 只看该作者
include <string.h>
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-7-25 22:51:12 | 只看该作者
写了#include <string.h>头文件,也报错

还有个问题,我想求的数组内字符的实际长度(可以实现吗)
比如
#include <stdio.h>
main()
{
    int j,k;
    char i[10]="abcde";
    printf("%s\n",i);
    k=sizeof(i);
    printf("%d\n",k-1);
}
显示9个(最后一个是\0)
我想显示的是5(只有abcde)
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-7-25 22:54:08 | 只看该作者
sizeof()的含义是计算这个变量占据内存的字节数,你声明的时候就是10个,所以他返回10个,减去1就是9个,这里不是因为'\0'的原因,要求实际长度,可以试试strlength
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-7-25 23:02:07 | 只看该作者
在C++里面是Strlen()
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-7-25 23:03:44 | 只看该作者
LZ!注意,我们告诉你的那个strlength可能不是C语言的,正确的可能是strlen,要<string.h>,由于语言太多记不清,引起混淆了,你用strlen试试看,刚才我在VC 6.0里调通了。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-7-25 23:04:21 | 只看该作者
他怎么又比我快一步?!
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2007-7-25 23:30:08 | 只看该作者
能否把你调好的给我看看啊,学习下sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2007-7-25 23:35:29 | 只看该作者
我的是VC++ 6.0环境下的,库和你用的可能不一样:
#include "stdafx.h"
#include <string.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
        int k;
    char i[10]="ad";
    printf("%s\n",i);
        k=strlen(i);

    printf("%d\n",k);
        return 0;
}
如果你用的是标准C,用这个试试看:

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

main()
{
        int k;
    char i[10]="ad";
    printf("%s\n",i);
        k=strlen(i);

    printf("%d\n",k);
}
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2007-7-25 23:53:37 | 只看该作者
谢谢,今天长知识了sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-7-26 01:29:50 | 只看该作者
#include <stdio.h>

int len(char *str)
{
        char *s;
        s = str;
        int count = 0;

        while(*s != '\0')
        {
                *s++;
                count++;
        }

        return (count);

}

void main()
{
        int k;
        char array[10]="adcd";

    printf("%s\n",array);

    k=len(array);

    printf("%d\n",k);
}
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-24 18:31 , Processed in 0.078654 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表