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 编辑 ] 回车也会被认为是字符读入,所以一起打出了 补充问题:如何计算一个未定义的数组,在添加元素后的数组长度(或则怎么计算一个数组里的字符长度)
LZ问得不够明确,什么叫未定义?是没有声明还是没有初始化?如果要自算长度,字符串本来就提供函数的,仅限于字符串 不好意思没说清楚!
定义一个数组(不定长度的) char string[]={};
向数组内输入内容:abcdef
如何求数组的长度? 用Strlength(s)返回长度 sizeof应该也可以 这个数组就是一个字符串,C语言中字符串都是存在一个字符数组中的,也就是char的数组,直接可以用C提供的函数查长度,具体哪个记不清,好像是什么strlength的,LZ可以查下资料。
实在不行也可以自己写一个,因为字符串都是以'\0'结尾的,可以用个循环,设置个信号量判断。 5楼那两个方法都可以,不过第一个函数好像只能用在字符串上,也就是char型数组上。第二个函数对任何的变量都能用,包括结构体,不过计算字符串可能要减一,因为最后有'\0',LZ可以试试看。
其实5楼我认识他,sdlkfj6 StrLength需要包含string.h头文件 似乎。。。。。。 是的,我敢肯定
PS:其实8楼的,我认识他 Strlength(s)如何使用的啊,是不是要使用什么头文件啊!(显示未定义)
#include <stdio.h>
main()
{
int j,k;
char i[]={};
for (j=0;j<=6;j++)
{
scanf("%c",&i);
}
printf("%s\n",i);
k=sizeof(i);
printf("%d\n",k-1);
}
显示-1,请指教怎么会事 include <string.h> 写了#include <string.h>头文件,也报错
还有个问题,我想求的数组内字符的实际长度(可以实现吗)
比如
#include <stdio.h>
main()
{
int j,k;
char i="abcde";
printf("%s\n",i);
k=sizeof(i);
printf("%d\n",k-1);
}
显示9个(最后一个是\0)
我想显示的是5(只有abcde) sizeof()的含义是计算这个变量占据内存的字节数,你声明的时候就是10个,所以他返回10个,减去1就是9个,这里不是因为'\0'的原因,要求实际长度,可以试试strlength 在C++里面是Strlen() LZ!注意,我们告诉你的那个strlength可能不是C语言的,正确的可能是strlen,要<string.h>,由于语言太多记不清,引起混淆了,你用strlen试试看,刚才我在VC 6.0里调通了。 他怎么又比我快一步?! 能否把你调好的给我看看啊,学习下sdlkfj2 我的是VC++ 6.0环境下的,库和你用的可能不一样:
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int k;
char i="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="ad";
printf("%s\n",i);
k=strlen(i);
printf("%d\n",k);
} 谢谢,今天长知识了sdlkfj2 #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="adcd";
printf("%s\n",array);
k=len(array);
printf("%d\n",k);
}
页:
[1]