- 删除字符串中的非大小写字母元素
void deleteother(char str[])
{
char* p1, * p2;
p1 = str;
p2 = str;
while (*p2 != '\0')
{
if (*p2 >= 'A' && *p2 <= 'Z' || *p2 >= 'a' && *p2 <= 'z')
{
*p1 = *p2;
p1++;
}
p2++;
}
*p1 = '\0';
str = p1;
}
- 字符串排序函数
void sortP_Str(char* pstr[])
{
int i, j;
char tmp[81];
for (j = 1; j < 5; j++)
{
for (i = 0; i < 5 - j; i++)
{
if (strcmp(pstr[i], pstr[i + 1]) > 0)
{
/*这里采用拷贝字符串来实现交换位置的操作*/
strcpy(tmp, pstr[i]);
strcpy(pstr[i], pstr[i + 1]);
strcpy(pstr[i + 1], tmp);
}
}
}
}
- 从字符串中将单词分离出来
//输出用空格分隔开的单词
int printWord(char* str, char** Pstr)
{
int count = 0, flag = 0;
//利用指针数组记录单词的起始位置,把字符串中单词结束后的空格改为'\0'
while (*str != '\0')
{
if (*str == ' ')
{
if (flag != 0)
{
*str = 0;
flag = 0;
}
}
else if (flag == 0) //flag=0代表的是当前读取的是字母
{
flag = 1;
*(Pstr + count) = str;
count++;
}
str++;
}
return count;
}
4. 任意数据的进制转换
//进制转换函数
void transNum(int m, int n)
{
int num[20] = { 0 }, i, j;
for (i = 0; m; i++)
{
num[i] = m % n;
m /= n;
}
printf("对于的%d进制转换数据为-->", n);
for (j = i - 1; j >= 0; j--)
{
printf("%d", num[j]);
}
printf("\n");
}
5. 数组的转置
//转置矩阵
void transArray(int arr[][N], int m, int n)
{
int i, j, temp;
for (i = 0; i < n; i++)
{
for (j = 0; j < i; j++) //注意这里应该是j<i才正确
{
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
6.移动数组的后m个数变为前m个数
//移动后m个数变为前m个数
/*
先将后m个数进行移动,
再依次向后移动没有变换的数据,
最后再让前面空出来的m个位置依次填入后m个数
*/
void moveDeal(int* num, int n, int m)
{
int i, j, * p, count = 0;
//为要进行移动的m个数开辟空间
p = (int *)malloc(m * sizeof(int));
//直接将后m个数变成前m个数,相应位置数据对换,改变指针的指向
for (i = n - m, j = 0; i <= n - 1; i++, j++) //注意等号
{
*(p + j) = *(num + i);
}
//向后移动没被纳入移动范围的数据
for (i = n - 1 - m, j = n - 1; i >= 0; i--, j--)
{
//让空出的最后一个位置接纳开始移动的前一个数据
*(num + j) = *(num + i);
}
//让原数组的指针指向移动的新数据指针处
for (i = 0; i < m; i++)
{
*(num + i) = *(p + i);
}
free(p);
}