c语言 用数组将某个字符除去,一波C语言字符数组实用技巧集锦

字符数组倒序

#include

void daoxu(char str[]){

int i;

char temp;

for(i = 0; i < strlen(str) / 2 ; i ++){

temp = str[i];

str[i] = str[strlen(str) - i-1];

str[strlen(str) - i-1] = temp;

}

}

单词计数

int wordCount(char str[]){

int i;

int count = 0;

int word = 0;

for (i = 0 ; str[i] != '\0' ; i ++)

{

if (str[i] == ' ')

{

word = 0;

}else if (word == 0)

{

word = 1;

count ++;

}

}

return count;

}

字符大写转小写

void mylwr(char str[]){

int i;

for (i = 0 ; str[i] != '\0' ; i ++)

{

if (str[i] >= 'A' && str[i] <= 'Z')

{

str[i] += 'a' - 'A';

}

}

}

字符小写转大写

void myupr(char str[]){

int i;

for (i = 0 ; str[i] != '\0' ; i ++)

{

if (str[i] >= 'a' && str[i] <= 'z')

{

str[i] -= 'a' - 'A';

}

}

}

字符数组计算字符串长度

int mylen(char str[]){

int len;

for (len = 0 ; str[len] != '\0' ; len ++);

return len;

}

字符串连接

void mycat(char str1[],char str2[]){

int i,j;

for (i = 0 ; str1[i] != '\0' ;i++);

for (j = 0 ; str2[j] != '\0' ; j ++)

{

str1[i + j] = str2[j];

}

str1[i + j] = '\0';

}

指定长度串接

void myncat(char str1[],char str2[], int len){

int i,j;

for(i = 0; str1[i] != '\0'; i++);

for (j = 0; j < len; j++)

{

str1[i + j] = str2[j];

}

str1[i + j] = '\0';

}

字符数组拷贝

void mycpy(char dst[],char src[]){

int i = 0;

do

{

dst[i] = src[i];

} while (src[i++] != '\0');

}

字符数组指定长度拷贝

void myncpy(char dst[],char src[], int len){

int i;

for (i = 0; i < len; i++)

{

dst[i] = src[i];

}

dst[i] = '\0';

}

找出句子中最长的单词

void longest(char dst[],char src[]){

int i = 0,j;

int count =0;

int max = -1;

do

{

if (src[i] ==' ' || src[i] == '\0')

{

if (count > max)

{

max = count;

for (j = 0; j < count; j++)

{

dst[j] = src[i - count + j];

}

dst[j] = '\0';

}

count = 0;

}else{

count++;

}

} while (src[i++] != '\0');

}

从字符串中提取整形数字

#include

int getint(char str[], int a[]){//从字符串中提取数字并放在数组中

int i = 0;

int w = 0;

int c = 0;

int j, k;

do

{

if (str[i] > '0' && str[i] <= '9')

{

w++;

}else if (w)

{

j = 0;

for (k = w; k > 0; k--)

{

j *= 10;

j += str[i - k] - '0';

}

w = 0;

a[c] = j;

c++;

}

} while (str[i++] != '\0');

return c;

}

void main(){

char str[100];

int a[100];

int i, j;

gets(str);

i = getint(str,a);

for (j = 0; j < i; j++)

{

printf("%d ",a[j]);

}

}

整形、字符数组型转换

#include

#include

int sumof1(int x)//求一个数转换成二进制以后1的个数

{

int countx = 0;

while(x)

{

countx ++;

x &= x-1; //每位与一次x - 1;就能消掉最后一个1

}

return countx;

}

void main(){

char c[10];

int i = 999;

itoa(i, c, 10);//以10进制转换成字符数组

puts(c);

itoa(i, c, 16);//以16进制转换成字符数组

printf("0x%s\n", c);

itoa(i, c, 8);//以8进制转换成字符数组

printf("0%s\n", c);

itoa(i, c, 2);//以2进制转换成字符数组

puts(c);

i = atoi(c);//再将字符串转成整形

printf("%d\n", i);

printf("%d\n", sumof1(i));//以2进制表示时1的个数

}

8986780c7198d28dc01b1d8ea140c3e3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值