c语⾔遍历字符串数组的⽅法
在这⾥我们重点介绍遍历字符串的三种⽅法。
⾸先我们来看⼀道编程题⽬:
输⼊⼀个字符串,且都是数字,也可以是负数,转化成相应的整型数并输出,若输⼊字母则停⽌。
我们知道,在C语⾔⾥有⼀个函数是“atoi”,它可以把字符串转换成整型数,包含在头⽂件stdlib.h中。以下是我们使⽤了这个函数的代码。
[objc]
1. #include <stdio.h>
2.
3. #define MAX_SIZE 1024
4.
5. int main()
6. {
7. char str[MAX_SIZE] = {0};
8.
9. int result;
10. int i;
11.
12. printf("Please input string : ");
13. gets(str);
14.
15. result = atoi(str);
16.
17. printf("result = %d\n",result);
18.
19. return 0;
20. }
[objc]
1. #include <stdio.h>
2.
3. #define MAX_SIZE 1024
4.
5. int main()
6. {
7. char str[MAX_SIZE] = {0};
8.
9. int result;
10. int i;
11.
12. printf("Please input string : ");
13. gets(str);
14.
15. result = atoi(str);
16.
17. printf("result = %d\n",result);
18.
19. return 0;
20. }
运⾏结果:
正数:
[objc]
2. result = 123456
[objc]
1. Please input string : 123456
2. result = 123456
负数:
[objc]
1. Please input string : -123456
2. result = -123456
[objc]
1. Please input string : -123456
2. result = -123456
带字母的字符串:
[objc]
1. Please input string : 123a456
2. result = 123
[objc]
1. Please input string : 123a456
2. result = 123
使⽤“atoi”函数做这道题很简单,那么我们能不能⾃⼰写⼀个函数来实现把字符串转换成整型数的功能呢?下⾯是我们⾃⼰写⼀个函数来实现把字符串转换成整型数的功能的代码。
[objc]
1. #include <stdio.h>
2.
3. #define MAX_SIZE 1024
4.
5. int my_atoi(charchar *str)
6. {
7. int i = 0;
8. int result = 0;
9. int flag = 1;
10.
11. if (*str == '-')
12. {
13. flag = -1;
14. str++;
15. }
16.
17. while (*str != '\0')
18. {
19. if (*str >= '0' && *str <= '9')
20. {
21. result = result * 10 + ( *str - '0' );
22. }
23. else
24. {
25. break;
26. }
29. }
30.
31. return result *flag;
32. }
33.
34. int main()
35. {
36. char str[MAX_SIZE] = {0};
37.
38. int result;
39. int i;
40.
41. printf("Please input string : ");
42. gets(str);
43.
44. result = my_atoi(str);
45.
46. printf("result = %d\n",result);
47.
48. return 0;
49. }
[objc]
1. #include <stdio.h>
2.
3. #define MAX_SIZE 1024
4.
5. int my_atoi(charchar *str)
6. {
7. int i = 0;
8. int result = 0;
9. int flag = 1;
10.
11. if (*str == '-')
12. {
13. flag = -1;
14. str++;
15. }
16.
17. while (*str != '\0')
18. {
19. if (*str >= '0' && *str <= '9')
20. {
21. result = result * 10 + ( *str - '0' );
22. }
23. else
24. {
25. break;
26. }
27.
28. str++;
29. }
30.
31. return result *flag;
32. }
33.
34. int main()
35. {
36. char str[MAX_SIZE] = {0};
37.
38. int result;
39. int i;
40.
41. printf("Please input string : ");
42. gets(str);
44. result = my_atoi(str);
45.
46. printf("result = %d\n",result);
47.
48. return 0;
49. }
运⾏结果:
正数:
[objc]
1. Please input string : 987654321
2. result = 987654321
[objc]
1. Please input string : 987654321
2. result = 987654321
负数:
[objc]
1. Please input string : -123456789
2. result = -123456789
[objc]
1. Please input string : -123456789
2. result = -123456789
带字母:
[objc]
1. Please input string : 123456a789
2. result = 123456
[objc]
1. Please input string : 123456a789
2. result = 123456
我们可以看到,⽤我们⾃⼰编写的函数运⾏的结果也是正确的。那么我们该怎么样编写这个函数呢?其实这⾥主要的知识点是字符串的遍历问题。如果我们想把字符串转化成整型数,那么我们需要⼀个⼀个地访问字符串⾥的内容,即字符串遍历。
⾸先我们介绍遍历字符串的三种⽅法:
1. for循环(字符数组)
[objc]
1. #include <stdio.h>
2. #include <string.h>
3.
4. #define MAX_SIZE 1024
5.
6. int main()
7. {
8. char src[MAX_SIZE] = {0};
10. int i;
11.
12. int len;
13.
14. printf("Please input string : ");
15. gets(src);
16.
17. len = strlen(src);
18.
19. printf("string = ");
20.
21. for (i = 0; i < len; i++)
22. {
23. printf("%c",src[i]);
24. }
25.
26. printf("\n");
27.
28. return 0;
29. }
[objc]
1. #include <stdio.h>
2. #include <string.h>
3.
4. #define MAX_SIZE 1024
5.
6. int main()
7. {
8. char src[MAX_SIZE] = {0};
9.
10. int i;
11.
12. int len;
13.
14. printf("Please input string : ");
15. gets(src);
16.
17. len = strlen(src);
18.
c语言如何创建字符串数组19. printf("string = ");
20.
21. for (i = 0; i < len; i++)
22. {
23. printf("%c",src[i]);
24. }
25.
26. printf("\n");
27.
28. return 0;
29. }
运⾏结果:
[objc]
1. Please input string : abcdefg123456
2. string = abcdefg123456
[objc]
1. Please input string : abcdefg123456
2. string = abcdefg123456
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论