本文目录一览:
- C语言怎么实现可变长度字符串
- c语言字符串长度有哪些?
- C语言问题,输出最长字符串
- c语言求字符串长度
- [C语言 输出最长字符串问题](#C语言 输出最长字符串问题)
- [C语言 字符串长度](#C语言 字符串长度)
C语言怎么实现可变长度字符串
C语言实现可变长度字符串,主要依靠realloc函数实现,主要代码如下,
//程序功能,判断插入字符长度len,若大于预设大小n,调整字符串数组大小,实现动态处理数组大小。
#include stdio.h
#include stdlib.h
#include string.h
int main(int argc, char *argv[])
{
char * pstr = NULL;
int n=10;//字符串初始大小
char str[100];//待插入字符串
int len=0;//待插入字符串长度
pstr = (char*)malloc(sizeof(char)*n);//申请sizeof(char)*n个大小的内存空间
if (pstr==NULL)
{
printf("内存申请出错,程序退出!\n");
exit(1);
}
memset(pstr,'\0',sizeof(char)*n);//初始化内存空间
printf("输入待插入字符串:\n");
gets(str);
len=strlen(str)+1;
printf("内存申请出错,程序退出!%d\n",len);
if(len > n)//字符串长度大于初始大小n,重新申请内存空间
pstr=(char *)realloc(pstr,sizeof(char)*len);//重新申请内存空间
strcat(pstr,str);//将插入字符串连接给pstr
puts(pstr);
if (pstr==NULL)//清理申请内存
{
free(pstr);
pstr=NULL;
}
return 0;
}
void *realloc( void *ptr, size_t size );
函数将ptr
指向的储存空间改变为给定的大小size
。参数size
可以是任意大小,大于或小于原尺寸(需要注意的是原始数据会丢失)都可以。返回值是指向新空间的指针,如果错误发生返回NULL
。
c语言字符串长度有哪些?
这个字符串长度为10个字符。
可以用strlen("ab'1'\\\12803")
来求这个字符串的长度。
也可以用sizeof("ab'1'\\\12803")
来求,但是这个求出的结果是多了一个字符串结束符\0
。
可以试着输出这个字符串看看是不是10个字符。
strlen()
函数判断的字符串长度是以\0
为结尾作为标志的。
当char * m=new char[TOKEN_LENGTH]
后,虽然为指针分配了地址,但是其指向的内容未被初始化,所以m
指向的内容是未知的,可能在第24个字符的位置发现了\0
所以strlen()
显示长度为24。
数据类型
字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。在某些语言中它们可作为基本类型获得,在另一些语言中做为复合类型获得。多数高级语言的语法允许通常用某种方式引用起来的字符串来表示字符串数据类型的实例;这种元字符串叫做“文本”或“字符串文本”。 以上内容参考:百度百科-字符串
C语言问题,输出最长字符串
#include stdio.h
int main()
{
int i, len = 0, maxlen = 0;
char *p, *pt, s[1024], subs[100];
printf("请输入字符串:\n");
gets(s);
for(pt = s; *pt != '\0'; pt++)
{
if((*pt != ',') && (*pt != '.') && (*pt != ' ') && (*pt != '"') && (*pt != '\0'))
len++;
else
{
if(len > maxlen)
{
maxlen = len;
p = pt - len;
len = 0;
}
}
}
for(i = 0; i < maxlen; i++)
subs[i] = *(p + i);
subs[maxlen] = '\0';
printf("最长的英文词是:%s,其长度是:%d个字符。\n\n", subs, maxlen);
return 0;
}
c语言求字符串长度
C语言中字符串长度的函数是strlen()
,一个字符的长度为1;
函数原型:
unsigned int strlen (char *s);
头文件:
#include string.h
参数说明:
s
为指定的字符串;
功能说明:
strlen()
用来计算指定的字符串s
的长度,不包括结束字符'\0'
;
返回值:
返回字符串s
的字符数;
注意:
strlen()
函数计算的是字符串的实际长度,遇到第一个'\0'
结束。
示例:
#include stdio.h
#include string.h
int main()
{
char str[] = "ab\nxyz"; // \n为回车字符,占一个字节
printf("strlen(str)=%d\n", strlen(str));
return 0;
}
// 输出结果:strlen(str)=6
C语言 输出最长字符串问题
你longest
函数,当判断当前单词比前一个单词短的时候,你没有将len
置0,导致后一个单词len
累加了。
我修改的地方标注了,把len++
拉到判断外面执行就行。
#include stdio.h
#include string.h
int main()
{
int alphabetic(char);
int longest(char[]);
int i;
char line[100];
printf("请输入一个字符串:\n");
gets(line);
printf("最长的单词是:");
for(i=longest(line); alphabetic(line[i]); i++)
printf("%c", line[i]);
printf("\n");
return 0;
}
int alphabetic(char c)
{
if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
return 1;
else
return 0;
}
int longest(char str[])
{
int len=0, i, length=0, flag=1, place=0, point;
for(i=0; i <= strlen(str); i++)
if(alphabetic(str[i]))
if(flag)
{
point=i;
flag=0;
}
else
len++;
else
{
flag=1;
if(len >= length)
{
length=len;
place=point;
}
len=0; // 修改这个地方
}
return(place);
}
C语言 字符串长度
这个字符串长度为10个字符。
你可以用strlen("ab'1'\\\12803")
来求这个字符串的长度。
也可以用sizeof("ab'1'\\\12803")
来求,但是这个求出的结果是多了一个字符串结束符\0
。
你可以试着输出这个字符串看看是不是10个字符。
实际上,这10个字符分别为:
a
b
'
1
'
\\
(\\
表示:前一个表示这是一个转义字符,后一个才是字符串中的真实字符)\12
(同上,\
表示这是一个转义字符,其后面的1~3个数字位是一个八进制数,在这里,第3个数字为8,所以它不是这个八进制数的一部分,即这个八进制数应该是12,转换为10进制数即为10,对应的ASCII码为一个换行符)8
0
3
注:\
用来说明一个转义字符,如\\
表示反斜杠字符“\”,\ddd
表示13位八进制数所代表的字符(ASCII码),2位十六进制数所代表的字符。\xhh
表示1