c语言:字符串

server/2024/9/24 5:25:01/

如果想把一个字符串读入程序,首先必须预留储存该字符串的空间,然后用输入函数获取该字符串。
分配空间
1.char *name;
2.char name[81];
 

1,2 的不同点:1.的指针在未进行初始化之前可能指向任何地方。
                        2.已分配了81个字节的地址。
  char *name;
  scanf("%s",name); // 错误 会将输入的字符串拷贝到任何地方可能会擦写掉程序中的数据或代码。
为字符串分配内存后便可读入字符串。
利用输入函数获取字符串
  1.scanf()函数。
弊端:只能读取一个单词。
原理:如果输入了空格会认为字符串结束,将空格后的字符作为下一个输入处理。
例如:scanf("%s",name); 输入:aas df 会将aas放入地址中再在后面自动添加'\0',并将df作为下一个输入处理。
#include <stdio.h>
int main()
{
char ch1[10],ch2[10];
 
  scanf("%s",ch1);
  scanf("%s",ch2);
  printf("%s,%s",ch1,ch2);
return 0;
}


2.gets()函数。
弊端:该函数只知道数组的开始处,并不知道数组的大小,如果输入的字符串过长容易溢出,可能擦写掉程序中的其他数据导致程序异常终止。
原理:读取整行的输入直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符末尾添加一个空字符使其成为一个字符串。
#include <stdio.h>
int main()
{
char ch1[10],ch2[10];
 
  gets(ch1);
  scanf("%s",ch2);
  printf("%s,%s",ch1,ch2);
return 0;
}


3.fgets()函数。
  gets()的参数只有数组的地址,而fgets()函数的参数有三个。
  fgets(将要输入字符串的地址,读入字符的最大数量,要读入的文件) 
通过第二个参数来限制读入字符的数量解决gets()的溢出的问题。
终止条件:①读入n-1个字符②遇到第一个换行符
原理:①终止在末尾添加一个空字符。
           ②终止保留换行符再在末尾添加一个空字符。 
返回值:当读到文件末尾时返回空指针。  


http://www.ppmy.cn/server/99777.html

相关文章

列表与链表的对比

列表&#xff08;List&#xff09;和链表&#xff08;LinkedList&#xff09;在效率上的比较主要取决于具体的操作类型和场景。以下是从不同方面对列表和链表效率的比较&#xff1a; 1. 存储和访问效率 列表&#xff08;List&#xff09;&#xff1a; 通常由数组实现&#xff…

Java中Stream流

Java中Stream流 Stream 使用flatMap处理嵌套集合: 有一个对象列表&#xff0c;每个对象又包含一个列表&#xff0c;可以使用flatMap来“展平”这个结构。 List<List<String>> listOfLists Arrays.asList(Arrays.asList("a", "b"),Arrays.a…

ffmpeg重采样

ffmpeg重采样指的是可以将一个固定频率的音频转换为任意格式的音频&#xff0c;比如改变音频的采样率或者声道&#xff0c;这种操作简称为重采样。但是在重采样的过程中也会有一些数据丢失的过程&#xff0c;主要原因是在采样会会进行向上对齐&#xff0c;所以会出现转换后大小…

k8s分布式存储-ceph

文章目录 Cephdeploy-ceph部署1.系统环境初始化1.1 修改主机名&#xff0c;DNS解析1.2 时间同步1.3 配置apt基础源与ceph源1.4关闭selinux与防火墙1.5 **创建** ceph **集群部署用户** cephadmin1.6分发密钥 2. ceph部署2.1 **安装** ceph 部署工具2.2 **初始化** mon **节点**…

string的模拟实现

1.string.h代码 #pragma once #include<assert.h> namespace myh {class string{friend ostream& operator<<(ostream& _cout, const myh::string& s);friend istream& operator>>(istream& _cin, myh::string& s);public:typedef …

apache几个重要概念和处理应对状态码的一些方法

一、apache几个重要概念 Apache 是一款开源 Web 服务器软件&#xff0c;在Web服务器&#xff08;如Apache HTTP Server&#xff09;和软件开发中&#xff0c;高度模块化、DSO&#xff08;Dynamic Shared Object&#xff09;和MPM&#xff08;Multi-Processing Module&#xff…

数据库逻辑删除时查询为什么不可用用like来进行查询?它们之间有什么转换吗?

1.首先可以查询我们的数据库字段&#xff0c;我们这里使用的是< bit(1) > 即只能存储一位&#xff0c;也只能是0或者1 2.在数据库操作中也被是涉及到逻辑删除时&#xff08;即使用某个字段来标识记录是否被删除&#xff0c;而不是从数据库中移除记录&#xff09;&#x…

【数据结构】五、树:6.平衡二叉树AVL

2.平衡二叉树AVL 文章目录 2.平衡二叉树AVL2.1定义2.2存储结构2.3查找2.4插入&#xff08;保持平衡&#xff09;2.4.1 LL平衡旋转(右单旋转)2.4.2 RR平衡旋转(左单旋转)2.4.3 LR平衡旋转(先左后右双旋转)2.4.4 RL平衡旋转(先右后左双旋转)2.4.5题解 2.5性能分析2.6删除 2.1定义…