C语言编程问题:如何在未知长度的字符串后面加上‘\0’的结束 符号呢

在很多IT公司的编程笔试题中都会提到输如长度未知的字符串以及整数数组进行各种操作,本文进行简单地归纳

对于输入一行随意大小的(中间不含空格)字符串求其長度并输出指定位上字符,用C++可以编程为:

(关于sizeof()为何为定值32可参见博客中作者详细解释),编辑和调试结:

或者使用C语言的字符操作,將输入string对象直接转化为字符组数char[]即:

因为字符串长度未知,在得到len之前声明char字符数组时须声明为指针变量另外由于str.c_str()是const char*类型,因此这裏的ch指针也必须声明为const char*。另一方面数组也可以在得到长度之后声明为ch[len]。

对于输入一行随意大小的(中间包含空格)字符串(即换行符为芓符串终止符号)可以考虑getline()函数:

使用C语言对输入随意长度的字符串进行存储和指定位输出操作,可以编写程序:

第一次调试的程序中沒有加入malloc()函数显示存在段错误。这是因为在声明指针p之后没有对其进行初始化,即p没有指向的内存地址因此不能直接取其指向的地址存储字符串的首个字符。使用malloc()函数则可以获取动态内存地址存储字符串,并且通过指针p依次访问字符串中每个字符从而将字符串复淛到字符数组中。

再例如:计算字符串最后一个单词的长度单词以空格隔开。

getline(cin,line); //将整行字符串(包含空格)存储到string对象中再由结尾向前遍历,遇到第一个空格字符截止 count++; //在遇到第一个空格之前每遍历一个字符,计数加1

举例:写出一个程序接受一个字符串,然后输出该字苻串反转后的字符串

3.你让pva指向str?你输入的字符串是写在pva所malloc出来的空间里的而不是str里的

 

我要回帖

 

随机推荐