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

news/2024/11/25 23:35:43/

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

[]

()


http://www.ppmy.cn/news/514951.html

相关文章

“阿凡达”随想

阿凡达&#xff0c;化身&#xff08;梵文:अवतार&#xff0c;拉丁写法&#xff1a;Avatar&#xff09;在印度哲学中&#xff0c;最普遍被认为和众神在地面上的肉体表现形式有关。在梵文中&#xff0c;化身一词具有透过深思熟虑&#xff0c;并且由于特殊目的而从较高境界“下…

《阿凡达:水之道》为什么能火爆全网 ?

《阿凡达&#xff1a;水之道》真的定档了&#xff01; 12月16日内地上映&#xff01; 也就是今天 同步北美&#xff0c;震撼大银幕 对观众、对行业、对电影市场 这都是一个超级重磅的好消息&#xff01; 《阿凡达1》(2010.1.4中国内地上映)→《阿凡达2》(将于2022.12.16内地上映…

阿凡达1111111111111111111111

阿凡达1111111111111111111111 阿凡达1111111111111111111111

化身阿凡达,国外小哥开源 AI 实时变脸工具 Avatarify

疫情期间&#xff0c;很多人都在用 Zoom 和 Skype 等软件进行视频会议。国外一位开发小哥觉得这样开会太无聊&#xff0c;于是基于 first-order-model 开发了一个能够把别人的照片套在自己脸上的“变脸”软件 Avatarify&#xff0c;并将其开源。 看过电影阿凡达&#xff08;Av…

python+人脸识别+opencv实现真实人脸驱动的阿凡达(中)

目录 一、前言二、消除图片拼接缝隙三、基于一张图片正脸转侧脸的实现1、人体头部的二维成像知识2、用特征点驱动的方法实现侧脸2.1python核心代码 三、后续工作 一、前言 我们在上篇名叫python人脸识别opencv实现真实人脸驱动的阿凡达&#xff08;上博文里已经实现了基于三角…

我看电影阿凡达(Avatar)

阿凡达&#xff08;Avatar&#xff09;是一部科幻电影&#xff0c;由著名导演詹姆斯卡梅隆执导&#xff0c;二十世纪福克斯出品。该影片预算超过5亿美元&#xff0c;成为电影史上预算最高的电影。此外&#xff0c;由卡梅隆导演注入心血的全平台同名游戏《阿凡达&#xff08;Jam…

《阿凡达2》首周末IMAX全球票房4880万美元;康泰生物新冠疫苗纳入第二剂次加强免疫接种 | 美通企业日报...

美通社要闻摘要&#xff1a; 康泰生物新冠灭活疫苗第二剂次加强针已开放公众预约接种。《阿凡达&#xff1a;水之道》首周末IMAX全球票房4880万美元。丰田汽车将与Oncor合作研究电动汽车充电技术。美的楼宇科技电梯华东配送中心及售后配件仓正式投入运营。利安德巴赛尔增加范围…

阿凡达

阿凡达 相关影评&#xff1a; 电影史新的里程碑 《阿凡达》 箫羽 影评 詹姆斯… 片  名&#xff1a;阿凡达 喜欢阿凡达的那种英雄气概 更多>> 我也看过这部电影 虽然说没有看到3D的效果 但是我自认为剧情、风景很好 值得一看