51Testing软件测试论坛
标题:
C小问题!
[打印本页]
作者:
lhjtc8257
时间:
2007-7-25 22:08
标题:
C小问题!
#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 编辑
]
作者:
keenling
时间:
2007-7-25 22:10
回车也会被认为是字符读入,所以一起打出了
作者:
keenling
时间:
2007-7-25 22:12
补充问题:如何计算一个未定义的数组,在添加元素后的数组长度(或则怎么计算一个数组里的字符长度)
LZ问得不够明确,什么叫未定义?是没有声明还是没有初始化?如果要自算长度,字符串本来就提供函数的,仅限于字符串
作者:
lhjtc8257
时间:
2007-7-25 22:19
不好意思没说清楚!
定义一个数组(不定长度的) char string[]={};
向数组内输入内容:abcdef
如何求数组的长度?
作者:
Jor
时间:
2007-7-25 22:24
用Strlength(s)返回长度 sizeof应该也可以
作者:
keenling
时间:
2007-7-25 22:25
这个数组就是一个字符串,C语言中字符串都是存在一个字符数组中的,也就是char的数组,直接可以用C提供的函数查长度,具体哪个记不清,好像是什么strlength的,LZ可以查下资料。
实在不行也可以自己写一个,因为字符串都是以'\0'结尾的,可以用个循环,设置个信号量判断。
作者:
keenling
时间:
2007-7-25 22:31
5楼那两个方法都可以,不过第一个函数好像只能用在字符串上,也就是char型数组上。第二个函数对任何的变量都能用,包括结构体,不过计算字符串可能要减一,因为最后有'\0',LZ可以试试看。
其实5楼我认识他,sdlkfj6
作者:
Jor
时间:
2007-7-25 22:35
StrLength需要包含string.h头文件 似乎。。。。。。
作者:
keenling
时间:
2007-7-25 22:36
是的,我敢肯定
PS:其实8楼的,我认识他
作者:
lhjtc8257
时间:
2007-7-25 22:41
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,请指教怎么会事
作者:
keenling
时间:
2007-7-25 22:42
include <string.h>
作者:
lhjtc8257
时间:
2007-7-25 22:51
写了#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)
作者:
keenling
时间:
2007-7-25 22:54
sizeof()的含义是计算这个变量占据内存的字节数,你声明的时候就是10个,所以他返回10个,减去1就是9个,这里不是因为'\0'的原因,要求实际长度,可以试试strlength
作者:
Jor
时间:
2007-7-25 23:02
在C++里面是Strlen()
作者:
keenling
时间:
2007-7-25 23:03
LZ!注意,我们告诉你的那个strlength可能不是C语言的,正确的可能是strlen,要<string.h>,由于语言太多记不清,引起混淆了,你用strlen试试看,刚才我在VC 6.0里调通了。
作者:
keenling
时间:
2007-7-25 23:04
他怎么又比我快一步?!
作者:
lhjtc8257
时间:
2007-7-25 23:30
能否把你调好的给我看看啊,学习下sdlkfj2
作者:
keenling
时间:
2007-7-25 23:35
我的是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);
}
作者:
lhjtc8257
时间:
2007-7-25 23:53
谢谢,今天长知识了sdlkfj2
作者:
seifer1754
时间:
2007-7-26 01:29
#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);
}
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2