遍历字符串的三种方法:
(1) for循环(字符数组)
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
int main()
{
char src[MAX_SIZE] = {0};
int i;
int len;
printf("Please input string : ");
gets(src);
len = strlen(src);
printf("string = ");
for (i = 0; i < len; i++)
{
printf("%c",src[i]);
}
printf("\n");
return 0;
}
运行结果:
Please input string : abcdefg123456
string = abcdefg123456
Please input string : abcdefg123456
string = abcdefg123456
在这里我们首先利用了strlen函数测量字符数组的长度,然后用for循环遍历字符串,将输入的字符串的内容一个字符一个字符输出。
(2) while循环(字符数组)
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
int main()
{
char src[MAX_SIZE] = {0};
int i = 0;
printf("Please input string : ");
gets(src);
printf("string = ");
while (src[i] != '\0')
{
printf("%c",src[i]);
i++;
}
printf("\n");
return 0;
}
运行结果:
Please input string : congcong123456
string = congcong123456
Please input string : congcong123456
string = congcong123456
由于输入的字符串的长度是未知的,然而我们遍历字符串的时候需要用到循环,我们知道当循环次数未知时,最好使用while语句。
(3)while循环(指针)
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
int main()
{
char src[MAX_SIZE] = {0};
char *temp = src;
printf("Please input string : ");
gets(src);
printf("string = ");
while (*temp != '\0')
{
printf("%c",*temp);
temp++;
}
printf("\n");
return 0;
}
运行结果:
Please input string : congcong123
string = congcong123
Please input string : congcong123
string = congcong123
在这里我们首先定义了一个指针变量,指向数组的首地址,那为什么要定义这个指针变量呢?为什么不直接用“src++;”呢?
首先,我们要知道的是数组名代表了什么:
①指针常量
②数组首元素的地址
既然数组名代表了指针常量,常量怎么可以自增呢?所以不可以用“src++;”,如果使用“src++;”,那么在编译时便会报错“错误:自增运算中的左值无效”。
注意:在上述“将字符串转化成整型数”的编程题中,还有一个小知识点,就是如何准确地将正数和负数表示出来。首先我们可以利用一个“flag”,我们将flag初始化为1,符号会出现在我们所输入的字符串的首位,只需要判断这个是不是‘-’,如果是的话,将flag置为-1,最后将结果与flag相乘即可,如果是正数,则不用管,正数乘1还是原数。