【编程语言 · C语言 · 字符串】

字符串

C中的字符串是一个以NULL字符'\0'结尾的字符数组。

字符串声明可以通过多种方式进行,每种方式都有其各自的考虑因素。

例如:

char str_name[str_len] = "string";

这将创建一个由str_len个字符组成的名为str_name的字符串,并将其初始化为值“ string”。

提供字符串文字以初始化字符串时,编译器会自动将NULL字符'\0'添加到char数组。

因此,必须声明数组大小至少比预期的字符串长度长一个字符。

下面的语句创建包含NULL字符的字符串。如果声明不包含char数组大小,则将根据初始化中字符串的长度加上'\0'的值来计算:

char str1[6] = "hello";
char str2[ ] = "world";  /* size 6 */

字符串也可以声明为一组字符:

char str3[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
char str4[ ] = {'h', 'e', 'l', 'l', 'o', '\0'}; /* size 6 */ 

使用这种方法,必须显式添加NULL字符。请注意,这些字符用单引号引起来。

与任何数组一样,字符串的名称充当指针。

字符串文字是用双引号引起来的文本。

诸如 'b' 之类的字符用单引号引起来,不能视为字符串。

字符串指针声明,例如 char *str ="stuff"; 被认为是常量,不能从其初始值更改。

为了安全,方便地使用字符串,可以使用下面显示的“标准库”字符串函数。不要忘记引入<string.h>头文件。

strlen() -获取字符串的长度

strcat()-合并两个字符串

strcpy()-将一个字符串复制到另一个

strlwr()-将字符串转换为小写

trupr()-将字符串转换为大写

strrev()-反向字符串

strcmp()-比较两个字符串

【填空题】将字符串声明为char数组:

 str[] = "Hello, world!";

字符串输入

程序通常是交互式的,要求用户输入。

为了从用户那里检索一行文本或其他字符串,C提供了scanf(),gets()和fgets()函数。

你可以使用scanf()根据格式说明符读取输入。

例如:

char first_name[25];
int age;
printf("Enter your first name and age: \n");
scanf("%s %d", first_name, &age);

当使用scanf()读取字符串时,不需要&访问变量地址,因为数组名称充当指针。

scanf()到达空格时停止读取输入。

要读取带空格的字符串,请使用gets()函数。它读取输入,直到到达终止换行符(按Enter键)。

例如:

char full_name[50];
printf("Enter your full name: ");
gets(full_name);

gets()的更安全替代方法是fgets(),它最多读取指定数量的字符。

这种方法有助于防止缓冲区溢出(当字符串数组的大小不足以容纳键入的文本时发生)。

例如:

char full_name[50];
printf("Enter your full name: ");
fgets(full_name, 50, stdin);

fgets() 参数是字符串名称,要读取的字符数以及指向要从中读取字符串的指针。stdin表示从标准输入(即键盘)中读取。

get 和 fgets 之间的另一个区别是换行符由fgets存储。

fgets() 仅从stdin读取n-1个字符,因为必须有用于'\0'的空间。

【选词填空】使用scanf函数从输入中读取字符串


 str[20];
scanf("%s", );

char

int

str

字符串输出

字符串输出由fputs(),putf()和printf()函数处理。

fputs 函数

fputs 函数的作用是向指定的文件写入一个字符串,其中字符串可以是字符串常量,也可以是字符组名、指针或变量。

fputs 一般形式如下:

fputs(字符串, 文件指针)

例如:

#include <stdio.h>
int main()
{
  char city[40];
  printf("Enter your favorite city: ");
  gets(city);
  // Note: for safety, use
  // fgets(city, 40, stdin);

  fputs(city, stdout);
  printf(" is a fun city.");

  return 0;
}

puts() 函数仅接受字符串参数,也可以用于显示输出。

但是,puts() 将在输出中添加换行符。

例如:

#include <stdio.h>
int main()
{
  char city[40];
  printf("Enter your favorite city: ");
  gets(city);
  // Note: for safety, use
  // fgets(city, 40, stdin);

  puts(city);

  return 0;
}

【选词填空】声明字符串,并使用fputs()函数将其输出:

 name[] = "John Smith";
(, stdout);

puts

char

fputs

name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟程序员__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值