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

文章介绍了C语言中用于格式化字符串的sprintf函数和从字符串读取值的sscanf函数,以及string.h库中的字符串操作函数,如strcpy,strcat等。还讨论了将字符串转换为数字的atoi等函数,并提到了使用指针数组处理字符串数组的灵活性。
摘要由CSDN通过智能技术生成

sprintf 和 sscanf 函数

可以使用 sprintf() 函数创建格式化的字符串。这对于用其他数据类型来构建字符串很有用。

例如:

#include <stdio.h>
int main()
{
  char info[100];
  char dept[ ] = "HR";
  int emp = 75;
  sprintf(info, "The %s dept has %d employees.", dept, emp);
  printf("%s\n", info);

  return 0;
}

尝试一下

结果是:

The HR dept has 75 employees.

另一个有用的函数是 sscanf(),用于扫描字符串中的值。

该函数从字符串中读取值,并将其存储在相应的变量地址中。

例如:

#include <stdio.h>
int main()
{
  char info[ ] = "Snoqualmie WA 13190";
  char city[50];
  char state[50];
  int population;
  sscanf(info, "%s %s %d", city, state, &population);
  printf("%d people live in %s, %s.", population, city, state);

  return 0;
}

尝试一下

结果是:

13190 people live in Snoqualmie, WA.

【单选题】以下哪一项是用于从其他数据类型构建字符串?

sprintf

stdio

printf

string.h库

string.h库包含许多字符串函数。

程序顶部使用语句#include <string.h>使您可以访问以下内容:

strlen(str) 返回存储在str中的字符串的长度,不包括NULL字符。

strcat(str1, str2) 将str2追加(连接)到str1的末尾,并返回指向str1的指针。

strcpy(str1, str2) 将str2复制到str1。此功能对于为字符串分配新值很有用。

下面的程序演示了string.h函数:

#include <stdio.h>
#include <string.h>

int main()
{
  char s1[ ] = "The grey fox";
  char s2[ ] = " jumped.";
    
  strcat(s1, s2);
  printf("%s\n", s1);
  printf("Length of s1 is %d\n", strlen(s1));
  strcpy(s1, s2);
  printf("s1 is now %s \n", s1);

  return 0;
}

运行结果:

The grey fox jumped.
Length of s1 is 20
s1 is now  jumped. 

其他的string.h函数包括:

strncat(str1, str2, n) 将str2的前n个字符追加(连接)到str1的末尾,并返回指向str1的指针。

strncpy(str1, str2, n) 将str2的前n个字符复制到str1。

strcmp(str1, str2) 当str1等于str2时返回0,在 str1 <str2 时返回小于0,在 str1> str2 时返回大于0。

strncmp(str1, str2, n) 当str1的前n个字符等于str2的前n个字符时,返回0;当str1 <str2时,小于0;当str1> str2时,大于0。

strchr(str1, c) 返回指向str1中首次出现的char c的指针,如果找不到字符,则返回NULL。

strrchr(str1,c) 反向搜索str1并返回一个指向char c在str1中位置的指针;如果找不到字符,则返回NULL。

strstr(str1,str2) 返回指向str1中首次出现的str2的指针,如果未找到str2,则返回NULL。

【选词填空】输入代码包含字符串函数的头文件:

include<.h>

#

stdio

string

$

将字符串转换为数字

将数字字符串转换为数值是C编程中的常见任务,通常用于防止运行时错误。

读取字符串比期望数值更容易出错,用户可能不小心键入“ o”而不是“ 0”(零)。

stdio.h库包含以下用于将字符串转换为数字的函数:

int atoi(str) 代表ASCII转成整数。将str转换为等效的int值。如果第一个字符不是数字或未遇到任何数字,则返回0。

double atof(str)表示ASCII转成浮动。将str转换为等效的double值。如果第一个字符不是数字或未遇到数字,则返回0.0。

long int atol(str) 表示ASCII转成long int。将str转换为等效的长整数值。如果第一个字符不是数字或未遇到任何数字,则返回0。

例如:

#include <stdio.h>
int main()
{
  char input[10];
  int num;
    
  printf("Enter a number: ");
  gets(input);
  num = atoi(input);

  return 0;
}

注意,atoi() 缺少错误处理,如果要确保已完成正确的错误处理,建议使用strtol()。

【选词填空】将字符串转换为整数:

char str_num[] = "123";
int num = (str_num);
printf("%d", num);

toint

atoi

strtoint

字符串数组

二维数组可用于存储相关的字符串。

以下语句,该语句声明一个包含3个元素的数组,每个元素包含15个字符:

char trip[3][15] = {
  "suitcase",
  "passport",
  "ticket"
};

尽管字符串长度有所不同,但必须声明一个足够大的大小以容纳最长的字符串。另外,访问这些元素可能非常麻烦。

引用trip[0]表示“suitcase”容易出错。相反,您必须将[0][0]处的元素视为“ s”,将[2] [3]处的元素视为“ k”,依此类推。

处理相关字符串集合的一种更简单,更直观的方法是使用指针数组,如以下程序所示:

char *trip[ ] = {
  "suitcase",因为每个元素的长度都可以变化,所以与二维网格结构相比,字符串指针数组的结构更加参差不齐。
  "passport",
  "ticket"
};

printf("Please bring the following:\n");
for (int i = 0; i < 3; i++) {
  printf("%s\n", trip[ i ]);
}

因为每个元素的长度都可以变化,所以与二维网格结构相比,字符串指针数组的结构更加参差不齐。

使用这种方法,字符串长度没有限制。更重要的是,可以通过指向每个字符串的第一个字符的指针来引用项目。

请记住,像 char * items [3]; 这样的声明;仅保留三个指针的空间;这些指针引用了实际的字符串。

【选词填空】声明字符串数组:

 *names  = {

  "John",

  "Jill",

  "Janet"

};

{}

char

[]

()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟程序员__

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

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

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

打赏作者

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

抵扣说明:

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

余额充值