1. 字符串操作
1.1 字符串遍历
可以通过数组方式遍历字符串
#include <stdio.h>
void main(){
char str[]="Hello World";
for(int i=0;'\0'!=str[i];i++){
printf("%c\n",str[i]);
}
}
也可以使用指针方式
#include <stdio.h>
void main(){
char str[]="Hello World";
for(int i=0;'\0'!=*(str+i);++i){
printf("%c\n",*(str+i));
}
}
指针方式也可以简化为以下的方式
#include <stdio.h>
void main(){
char str[]="Hello World";
char *t=str;
while('\0'!=*t){
printf("%c\n",*t++);
}
}
还有
while('\0' != *str){
printf("%c\n",*str++);
}
while(*str){
printf("%c\n",*str++);
}
1.2 字符串赋值
#include <stdio.h>
void main(){
char str[]="Hello World";
char *t;
t=str;
printf("%s\n",t);
}
没有产生新的字符串,只是t和str指向相同的字符串。查看以下两个字符串的地址。
#include <stdio.h>
void main(){
char str[]="Hello World";
char *t;
t=str;
printf("%s\n",t);
printf("%p\n",str);
printf("%p\n",t);
}
结果是:
0x7ffdfed7ee5c
0x7ffdfed7ee5c
练习:
字符串的修改:
#include <stdio.h>
void main(){
char s[]="Hello World";
char *t;
t=s;
printf("%s\n",t);
t[1]='o';
printf("%s\n",s);
printf("%s\n",t);
s[4]='e';
printf("%s\n",s);
printf("%s\n",t);
}
输出的结果是:
Hello World
Hollo World
Hollo World
Holle World
Holle World
指针是不能反向赋值给字符串的
1.3 字符串输入输出
char str[8];
scanf("%s",str);
printf("%s\n",str);
scanf()读入一个单词直到空白符(空格、回车、Tab)
scanf()不安全,因为不知道要读入的内容长度,容易溢出。
例如:输入123456789
解决方式:指定读取的长度。
char str[8];
scanf