C语言中输入char字符的方法

admin

在C语言中,处理char类型的字符和字符串输入是一个常见的任务,本文将介绍几种方法来赋值给char类型字符,并处理字符串输入的问题。

使用string类的成员函数c_str()可以获取转换成的char*型字符串。

<pre><code>#include &lt;iostream&gt;

#include &lt;string&gt;

#include &lt;cstring&gt;

using namespace std;

int main(){

string st("Hello");

char a[100];

strcpy(a,st.c_str());

cout &lt;&lt; a &lt;&lt; endl;

return 0;

}</code></pre>

在C语言中,字符串被定义为字符数组,定义一个数组时,数组里存放元素为字符串各个字符加上'\0',\0'是码值为0的值,编译器会自动在字符串的末尾添加此值。

在定义这个数组时,指定数组的大小为6,也就是说需要申请6个字节的存储空间,而在等号右侧的双引号中我们只书写了5个字符,这并不是笔误,C语言规定当使用双引号定义字符串时以'\0'作为这个字符串的结束标志符,也就是说这个字符串一共有6个字符。

在C语言中,将字符串作为字符数组来处理。(在C++中不是)在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'\0'代表。

C语言采用字符数组储存字符串,在从字符数组中读取字符串时,计算机是按照顺序来读取的,当然如果没有结束标记,计算机就会一直的读取下去(那么一直读取,然后超出了所定义的数组范围。

什么是字符串常量?

C语言虽然没有字符串类型,但是C语言提是存在字符串这个概念的,也就是字符串常量:以NUL字节结尾的0个或多个字符组成的序列,字符串常量是不可被修改的,一般用一对双引号("")括起的一串字符来表示字符串常量,如:

"Hello!"、"\aWarning!\a"、"123abc\n"、""

字符串常量可以为空,如""就是一个空的字符串常量,但是即使为空,还是存在一个终止符NUL的。(在C语言中,常用转义字符\0来表示NUL)

字符串常量与指针

字符串常量与指针关系密切,因为字符串常量的值,实际上表示的是存储这些字符的内存空间的地址,更准确地说是字符串常量中第1个字符的地址,而不是这些字符本身,在C语言中是不能直接进行字符串赋值的(因为没有字符串类型嘛),在C语言中,常通过声明一个指向char类型的指针并将其初始化为一个字符串常量的方式来访问一个字符串:

<pre><code>char str[] = "awgweg";

char c = 'c';

str[sizeof(str) - 1] = c; // sizeof()这个函数是求出字符数组str的长度,那个这句就是将字符c变成为该数组的最后一个数组元素,也就是将字符c加在该字符串的最后

str[sizeof(str)] = '\0'; // 由于字符串是以字符‘\0’结尾的,所以该字符串的长度不是6而是7,执行上一句后,该字符串的'\0'变成了字符c,因此需要重新添加'\0'到该字符串的最后最为该字符串的结尾。</code></pre>

程序执行了这两句后就实现了将字符c加到该字符串的后面了。

printf("%s\n", str); // 这样字符'c'就加在字符串str后面了

总结

到此,以上就是关于C语言中char输入字符串的问题的介绍,希望这些解答对大家有所帮助。

文章版权声明:除非注明,否则均为 武汉华信铸诚信息技术有限公司原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码