c语言中怎么定义并输入一个字符串

c语言中怎么定义并输入一个字符串,第1张

可以通过字符数组或字符指针来定义字符串,也可以用宏定义对常量字符串进行定义。
下面通过举例来分别进行说明:
1
2
3
4
5
char str1[] = "HelloWorld"; // 通过字符数组来定义字符串"HelloWorld",数组中每个存储单元存放一个字符
char str2 = "HelloWorld"; // 通过字符指针来定义字符串"HelloWorld",指针str2指向一个存放字符串"HelloWorld"的连续地址单元的首地址
#define str3 "HelloWorld"; // 通过宏定义来定义字符串"HelloWorld",等价于str3="HelloWorld"

C语言中字符串的输入和输出主要有两种方式:

输入使用:scanf("%s",a);对应的输出使用:printf("%s\n",a);

输入使用:gets(b);对应的输出使用:puts(b);

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。

通常以串的整体作为 *** 作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

c语言函数中传递字符串,可以分为两种情况,一种是将字符串作为参数,一种是将字符串作为返回值
,当使用字符串作为返回值时,切记不要传递局部字符数组。下面是一个示例代码:
#include
#include
#include
void f(char str) { //字符串作参数
printf(str);
}
char r() { //字符串作返回值
//使用动态分配内存,不要使用局部变量比如
//char buf[80]; 因为局部变量在函数结束时,栈区变量已被回收
char str = (char )malloc(256 sizeof(char));
if (str==0) { printf("can't alloc mem\n"); return 0;}
else memset(str, 0x00 ,sizeof(char) 256);
return str; //
}
int main()
{
char pstr = r();
if (pstr!=0) strcpy(pstr, "hello world\n");
f(pstr);
free(pstr);
return 0;
}

字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中。同时,C 语言提供了一系列库函数来对 *** 作字符串,这些库函数都包含在头文件 stringh 中。 一、字符串常量和字符数组 11、什么是字符串常量 C 语言虽然没有字符串类型,但是 C语言提是存在字符串这个概念的,也就是字符串常量:以 NUL 字节结尾的 0 个或多个字符组成的序列。字符串常量是不可被修改的,一般用一对双引号(" ")括起的一串字符来表示字符串常量,如: "Hello!"、"\aWarning!\a"、"123abc\n"、"" 字符串常量可以为空,如""就是一个空的字符串常量,但是即使为空,还是存在一个终止符 NUL 的。(在 C 语言中,常用转义字符 \0 来表示 NUL) 12、字符串常量与指针 字符串常量与指针关系密切,因为字符串常量的值,实际上表示的是存储这些字符的内存空间的地址,更准确地说是字符串常量中第 1 个字符的地址,而不是这些字符本身。因此,在 C 语言中是不能直接进行字符串赋值的(因为没有字符串类型嘛)。在 C 语言中,常通过声明一个指向 char 类型的指针并将其初始化为一个字符串常量的方式来访问一个字符串: char message = "Hello World!"; // 上面的语句也可以拆分成下面两句 char message; message = "Hello World!";// 这句话看起来像是字符串复制,其实不是,只是涉及到指针 *** 作 上述语句声明了一个指向 char 类型的指针,并用字符串常量中第 1 个字符的地址对该指针进行初始化。可以通过字符指针 message 来访问字符串常量: #include <stdioh> int main() { char message = "Hello World!"; printf("%s\n",message); while(message != '\0'){ printf("%c ",message++); } printf("\n"); return 0; } / output: Hello World! H e l l o W o r l d ! / 这段代码,使用字符指针遍历了字符串常量中的每一个字符。 13、字符数组 用于存放字符的数组称为字符数组。在 C 语言中,除了字符串常量外,其他所有字符串都必须存储于字符数组或动态分配的内存中。定义一个字符数组和定义一个普通数组一样,不同的是字符数组中存放的是字符数据而已: char charArray[] = {'H','e','l','l','o'}; // 声明并初始化一个字符数组 这句话定义并初始化了一个字符数组 charArray。这个数组的长度实际上为 6 ,因为会自动添加一个字符串结束符 '\0'。 C 语言提供了一种更简洁的方法来对字符数组进行初始化: char charArray[] = "Hello World!"; // 声明并初始化一个字符数组 上述两种声明方式等价。 可以对一个字符数组做出修改: #include <stdioh> #include <stringh> int main() { char str[] = "hello world!"; int len = strlen(str); int i; for(i = 0; i < len; i++){ if( str[i] <= 'z' && str[i] >= 'a'){ str[i] = str[i] - 32; } } printf("%s\n",str); } 这段代码可以将字符数组中的小写字母转换成大写字母后输出。 14、 字符串常量与字符数组的区别 1)字符串常量是一个字符数组,但是内容和长度在初始化时就已经固定了,不可更改;可以通过一个指向字符串常量第一个元素的指针来访问该字符串常量; 2)字符数组是一个用于存放字符的数组,字符数组的值是可以更改的。 二、获取字符串长度 字符串的长度就是这个字符串所包含字符的个数,但是这个长度是不包含 NUL 字符的。C 语言中使用库函数 strlen 来计算字符串长度: size_t strlen(char const string); 需要注意的是 strlen 的返回值类型:size_t 类型,这是一个无符号整数类型。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13170527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-15
下一篇 2023-06-15

发表评论

登录后才能评论

评论列表(0条)

保存