时间:2020年9月14日 17:09:31
/*下面程序的功能是从字符数组 s 中删除存放在 c 中的字符。 */
#include <stdio.h>
int main(void)
{
char s[80], c;
int j, k;
printf("\nEnter a string: ");
gets(s);
printf("\nEnter a character: ");
c = getchar();
for (j = k = 0; s[j] != '\0'; j++)
if (s[j] != c)
s[k++] = s[j]; // 妙用k++
s[k] = '\0';
printf("\n%s", s);
return;
}
运行结果:
Enter a string: windows
Enter a character: w
indos
分析:
程序:输入字符串windows,要删除w
第一次循环:
s[0] = c = w, 所以直接跳到for循环,不执行if语句
第二次循环:
此时 j = 1, k = 0
s[1] = i , 不等于 c (即w),所以:
s[0] = s[1] ,s[1]赋值给s[0],然后 k++,跳到
第三次循环:
j = 2, k = 1, s字符串为 iindows
第四次循环: inndows
第五次循环: inddows
第六次循环: indoows
第七次循环: indosws , s[k] = 'w'
第八次循环: indos\0