猿问

一道关于字符串中删除数字的问题

程序没有问题。str[j++]=str[i]这是什么意思啊???

# include <stdio.h>

#include <stdlib.h>


void DropNum(char* str)

{

int i=0;

int j=0;

while(str[i]!='\0')

{

if(str[i]>'9'||str[i]<'0')

str[j++]=str[i];

i++;


}

str[j]='\0';//字符串最后一个字符时'\0'

}

void main(){

char ch[] = "abcd123efg456hijk";

    DropNum(ch);

printf("%s\n",ch);

}


肥宅乐
浏览 1467回答 2
2回答

Yexiaomo

//需要先明白那个算法的 原理,-->(-->也就是重新整理数组,  看那个if 语句, 如果不是 数字的话执行:  str[j++]=str[i];-->j 是新的数组 的下标, 从零开始, 如果不是 数字, 将 str[i] 的值存放到 str[j]中)看 j++  ,  自增 符号   在后面, 所以是先进行 ‘++’之外的运算(也就是比‘++’运算级高的运算), 然后在 自增1,  str[j++]=str[i];   这条语句, 相当于下面这两条语句:str[j] = str[i];j++;不知道你能不能看懂, 不懂了, 在下面回复-------------------------------------------------------------分割线----------------------------------------------------------啦啦~~Imcainiao

一叶追寻

如果str[ i ]这个位置的字符不是数字,就把这个字符放到 str[ j ] 这个新的数组里,放了之后 j 自增1 ,以便存放下一个字符
随时随地看视频慕课网APP
我要回答