0
点赞
收藏
分享

微信扫一扫

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

树下的老石头 2023-06-22 阅读 75
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>头文件。

【填空题】将字符串声明为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,

当使用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存储。

【选词填空】使用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

举报

相关推荐

0 条评论