Linux C学习笔记(一)

1. 字符数组与字符串

1.1 字符数组的初始化

在这里插入图片描述
注意点:

在这里插入图片描述

1.2 字符串常用初始化方式

在这里插入图片描述

1.3 种子的使用

在这里插入图片描述

1.4 冒泡排序推导

在这里插入图片描述

1.5 获取一维数组相关信息

在这里插入图片描述

1.6 获取二维数组相关信息

在这里插入图片描述

输出结果:

在这里插入图片描述


=======================================================================


2. 字符串处理函数

2.1 scanf()的用法

在这里插入图片描述
输出展示如下,默认以空格分离:在这里插入图片描述
再添加一个示例:

在这里插入图片描述
输出结果如下:

在这里插入图片描述
以上问题涉及缓冲区问题,跟getchar类似:
在这里插入图片描述

  • 执行第一个scanf时:
    在这里插入图片描述
  • 执行第二个scanf时:
    在这里插入图片描述

scanf函数的缺陷:scanf不会去做数组的越界检查,但是在Visual Studio里数组越界会报错,也正是因为这个函数很危险,所以如果在Visual Studio如果不加入
#define _CRT_SECURE_NO_WARNINGS的宏定义,scanf函数将不允许被使用:

2.2 gets()的用法

在这里插入图片描述

2.3 fgets()的用法

在这里插入图片描述
这是一个最为常用的输入函数,因为它比较安全。输出只取指定的size

在这里插入图片描述

2.4 puts()的用法

在这里插入图片描述
输出结果显示,和printf相比,puts会自动在屏幕换行,但字符串本身不变:

在这里插入图片描述

2.5 fputs()的用法

和printf类似,差别不大,这个主要用在文件:

在这里插入图片描述

2.6 strlen()的用法

测量字符串的长度,此时输出结果是5:

在这里插入图片描述
若对应这么一个情况,输出结果是0,因为遇见结束符,strlen就结束:

在这里插入图片描述
重点注意的是sizeofstrlen测量字符串时的区别:

  • sizeof测量时会把结束符也算进去,strlen不会
  • 此处第一个sizeof输出6,第二个sizeof输出7
    在这里插入图片描述
    最终结果如下:
    在这里插入图片描述
2.7 strcpy()的用法

实现字符串的拷贝:

在这里插入图片描述
遇见'\0'就结束拷贝:

在这里插入图片描述

2.8 strncpy()的用法
  • 情况1
int main()
{
	char src[100] = "hello mike";//源字符串
	char dst[100] = "aaaaaaaaaaaaaaaaaaaaa"

	strncpy(dst, src, strlen(src));
	printf("dst = %s\n", dst);
}

输出结果:

hello mikeaaaaaaaaaaaaaaaaa

以上情况时只拷贝了hello mike这十个字符,strlen遇到\0结束,所以没有把\0也拷贝过去。

  • 情况2
int main()
{
	char src[100] = "hello mike";//源字符串
	char dst[100] = "aaaaaaaaaaaaaaaaaaaaa"

	strncpy(dst, src, strlen(src)+1);
	printf("dst = %s\n", dst);
}

输出结果:

hello mike

这个时候strncpysrc\0也一并考过去了,所以到dst输出的时候,遇到\0就结束了,所以后面的aaaaaaaaaaaa就不会输出了。

  • 情况3

在这里插入图片描述
这个时候查看能不能拷贝\0过去的时候发现不行,它虽然能把\0拷贝过去,但是\0后面的内容无法拷贝,也就显示不出来。

  • 缺点:数组越界不会报错

在这里插入图片描述
Linux 上的输出结果:

在这里插入图片描述

2.9 strcmp()的用法

函数原型int strcmp(const char *s1,const char *s2);
设这两个字符串为s1,s2,规则为:

  • 当s1<s2时,返回为负数
  • 当s1=s2时,返回值= 0
  • 当s1>s2时,返回正数

在这里插入图片描述
逐个比较单个元素的ASCII码,谁大哪个字符串就大。

2.10 fprint()的用法

printf()一样,只是输出到指定数组

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值