day6
1.字符串相关函数
1.1 strcpy
字符串拷贝函数
#include <string.h>
char *strcpy(char *dest, const char *src);
char *dest:拷贝目标
const char *src:被拷贝的字符串
char *strncpy(char *dest, const char *src, size_t n);
char *dest:拷贝目标
const char *src:被拷贝的字符串
size_t n: 拷贝字符的个数
注意:
拷贝内容,不能超过拷贝目标的存储范围,特别是 '\0'
eg:
char str1[32] = "123456";
char str2[32] = {0};
puts(str1);
puts(str2);
1.2 strlen
字符串长度函数
头文件:#include <string.h>
函数原型:size_t strlen(const char *s);
eg:
char str[32] = "hello world";
int len = strlen(str);
printf("%d\n", len);
1.3 strcat
字符串追加函数
#include <string.h>
char *strcat(char *dest, const char *src);
char *dest:追加的目标
const char *src:追加的字符串
char *strncat(char *dest, const char *src, size_t n);
eg:
char str1[32] = "hello world";
char str2[32] = "123456"
strcat(str1, str2);
puts(str1);
puts(str2);
1.4 strcmp
字符串比较函数
#include <string.h>
int strcmp(const char *s1, const char *s2);
const char *s1:字符串1的首地址
const char *s2:字符串2的首地址
返回值: 如果两个字符串相等,返回0
不相等,返回非0
int strncmp(const char *s1, const char *s2, size_t n);
练习
1.实现mystrlen
终端输入字符串,打印字符串的长度。
char str[32] = {0};
printf(">:");
gets(str);
int len = 0;
while(1)
{
if(str[len] == '\0')
break;
len++;
}
printf("len:%d strlen:%ld\n", len, strlen(str));
2…实现mystrcat
char str1[32] = "hell world";
char str2[32] = "123";
int i = 0;
while(1)
{
if(str1[i] == '\0')
break;
i++;
}
int j = 0;
while(1)
{
if(str2[j] == '\0')
break;
str1[i] = str2[j];
i++;
j++;
}
str1[i] = '\0';
puts(str1);
二维数组
一般形式:
存储类型 数据类型 数组名[行数][列数];
eg:
int a[3][3];
访问元素:
数组名[行标][列标];
int arr[3][3];
arr[0][0] = 10;
int a[3];
a[0] = 0;
1.初始化
int arr[2][3] = {1,2,3,4,5,6};
int arr[2][3] = {1,2,3};
int arr[2][3] = {{1,2},{3}};
自动计数:可以不写行数,但是列数不可以缺损
int arr[][3] = {1,2,3,4};
2.赋值
int arr[2][3] = {1,2,3,4,5,6};
int i, j;
for(i = 0; i < 2; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d\t", arr[i][j]);
}
puts("");
}
数组元素个数怎么算:
sizeof(数组名) / sizeof(元素类型)
练习
1.对二维数组每一行进行冒泡排序
int a[3][4] = { 1,99,80,66,
20,88,7,44,
55,33,88,20
};
int i, j, k;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 4 - 1; j++)
{
for(k = 0; k < 4 - 1 - j; k++)
{
if(a[i][k] > a[i][k+1])
{
int temp;
temp = a[i][k];
a[i][k] = a[i][k+1];
a[i][k+1] = temp;
}
}
}
}
for(i = 0; i < 3; i++)
{
for(j = 0; j < 4; j++)
{
printf("%d\t", a[i][j]);
}
puts("");
}