一波C语言字符数组实用技巧集锦

2025-05-27 0 69

字符数组倒序

?

1

2

3

4

5

6

7

8

9

10

11
#include <stdio.h>

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;

}

}

单词计数

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
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;

}

字符大写转小写

?

1

2

3

4

5

6

7

8

9

10
void mylwr(char str[]){

int i;

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

{

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

{

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

}

}

}

字符小写转大写

?

1

2

3

4

5

6

7

8

9

10
void myupr(char str[]){

int i;

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

{

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

{

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

}

}

}

字符数组计算字符串长度

?

1

2

3

4

5
int mylen(char str[]){

int len;

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

return len;

}

字符串连接

?

1

2

3

4

5

6

7

8

9
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';

}

指定长度串接

?

1

2

3

4

5

6

7

8

9
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';

}

字符数组拷贝

?

1

2

3

4

5

6

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

int i = 0;

do

{

dst[i] = src[i];

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

}

字符数组指定长度拷贝

?

1

2

3

4

5

6

7

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

int i;

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

{

dst[i] = src[i];

}

dst[i] = '\\0';

}

找出句子中最长的单词

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
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');

}

从字符串中提取整形数字

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39
#include <stdio.h>

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]);

}

}

整形、字符数组型转换

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
#include <stdio.h>

#include <stdlib.h>

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的个数

}

一波C语言字符数组实用技巧集锦

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 一波C语言字符数组实用技巧集锦 https://www.kuaiidc.com/75035.html

相关文章

发表评论
暂无评论