上图:
代码:
#include <stdio.h>
#include<string.h>//加了这个才能用 strlen 和 strcpy
int main() {
char s[] = "qsds144.6,EXO";//题目字符串s
int i, L;//i用来遍历确定元素的位置
//L用来记录字符串的长度
printf("处理前的字符串: %s\n", s);
L = strlen(s);//添加头文件string.h 用strlen函数判断字符串s的长度并赋值给L
for (i = L - 1; i >= 0; i--) {//L-1的意思:因为字符串是从0开始读起,所以L是长度,长度-1那么就是s的最后一个元素
if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))//所以这个语句就是判断位置i,及最后一个元素的位置是否是字母
strcpy(s + i, s + i + 1);//strcpy语句的用法strcpy(1,2)把 字符串元素2 复制给 字符串元素1
//当i是最后一个元素的位置是i+1就是'\0',那么s+i就是元素O,那么s+i+1就是'\0'
//所以当if判断到s+i是字母的话,就将s+i+1复制给s+i,这样以来原本的元素O就会被'\0'顶替掉,相当于删除掉
//然后继续循环 i--就来到了倒数第二个元素继续上面的判断操作,如果不是字母的话就不顶替掉,继续判断倒数第三个位置
}
printf("处理后的字符串: %s\n", s);//输出整个字符串用%s格式
return 0;
}
问题描述:
strcpy(1,2)就是把2赋值给1
那么最后得出的结果为什么不是:1111144.6,而是144.6,呢?他不是复制覆盖吗?