c语言字符数组中删除一个字符 C语言如何实现删除字符串中的字符

C\u8bed\u8a00\uff0c\u5229\u7528\u6307\u9488\u7f16\u5199\u7a0b\u5e8f\uff1a\u5220\u9664\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e2d\u7684\u67d0\u4e00\u4e2a\u5b57\u7b26

1\u3001\u5176\u5b9e\u5934\u51fd\u6570\u6bcf\u4e2a\u90fd\u9700\u8981\u7528\u5230\u7684\u5c31\u662f#include \uff0c\u56e0\u4e3a\u7a0b\u5e8f\u91cc\u9762\u6d89\u53ca\u5230\u4e86\u8f93\u51fa\u548c\u8f93\u5165\u5b57\u7b26\u4e32\u4ee5\u53ca\u5b57\u7b26\u3002#include \u3002

2\u3001\u5176\u6b21\u5c31\u662f\u8981\u5b9a\u4e49\u4e24\u4e2a\u76f8\u540c\u5bb9\u91cf\u7684\u5b57\u7b26\u4e32\u50a8\u5b58\u7684\u53d8\u91cf char a[100]; char b[100];\u3002\u4ee5\u53ca\u6574\u6570\u53d8\u91cf int c; int i=0,j=0; \u5176\u4e2da[100]\u662f\u5b58\u5b57\u7b26\u4e32\u7684\uff0cb\u3010100\u3011\u662f\u5b58\u4f60\u5220\u9664\u5bf9\u5e94\u5b57\u7b26\u7684\u5b57\u7b26\u4e32\u7684\uff0c\u6574\u6570C\u662f\u4f60\u60f3\u5220\u9664\u7b2c\u51e0\u4f4d\u3002j \uff0ci \u662f\u540e\u9762for\u5faa\u574f\u4e2d\u8981\u4f7f\u7528\u5230\u7684\u53d8\u91cf\u3002

3\u3001 printf("\u8bf7\u8f93\u5165\u4f60\u7684\u5b57\u7b26\u4e32"); scanf("%s",a); printf("\u8bf7\u8f93\u5165\u4f60\u60f3\u8981\u5220\u9664\u7b2c\u51e0\u4f4d\u5b57\u7b26"); scanf("%d",&c)\u3002

4\u3001 for(i=0;i<strlen(a);i++) { if(i+1!=c) { b[j]=a[i]; j++; } } printf(" %s",b); } \u3002

5\u3001\u53ea\u8981\u5f53i+1\u4e0d\u7b49\u4e8ec\u65f6\u628aa\u3010i\u3011\u91cc\u9762\u7684\u5b57\u7b26\u8d4b\u7ed9b\u3010i\u3011\uff0c\u90a3\u4e48\u8fd9\u6837\u5f53i+1=c\u65f6\u4e0d\u628a\u5b83\u8d4b\u7ed9b\u3010i\u3011\u4ece\u800c\u5b9e\u73b0\u5220\u9664\u529f\u80fd\u3002

6\u3001\u6700\u540e\u5c31\u7ed9\u5927\u5bb6\u5b8c\u6574\u7684\u770b\u4e00\u4e0b\u6574\u4f53\u7684\u4e00\u4e2a\u4ee3\u7801\u6d41\u7a0b\u3002

C\u8bed\u8a00\u5220\u9664\u5b57\u7b26\u4e32\u4e2d\u6307\u5b9a\u5b57\u7b26\u53ef\u4ee5\u53c2\u8003\u4e0b\u9762\u7684\u4ee3\u7801\uff1a
#include
int main
{
char * fun(char * s);
char arg[] = "hello.cgi?name1=value1&name2=value2";
printf("This value :%s\n",fun(arg));
getchar();
return 0;
}
char * fun(char * s)
{
char *s1 = s; //s1\u6307\u5411\u5b57\u7b26\u4e32\u9996\u5730\u5740
while ((*s != '?') && (*s != 0)) //\u5b57\u7b26\u4e0d\u4e3a\u7ed3\u675f\u7b26\u6216\u8005\u4e0d\u4e3a\uff1f\uff0c\u6307\u5411\u4e0b\u4e00\u4e2a\u5b57\u7b26
s++;
*s = 0; //\u5c06\u8fd9\u4e2a\u5b57\u7b26\u7f6e\u4e3a\u7ed3\u675f\u7b26
return s1;
};

\u6269\u5c55\u8d44\u6599\uff1a
C\u8bed\u8a00isupper()\u51fd\u6570\uff1a\u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u662f\u5426\u662f\u5927\u5199\u5b57\u6bcd
C\u8bed\u8a00isspace()\u51fd\u6570\uff1a\u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u662f\u5426\u662f\u7a7a\u767d\u7b26
C\u8bed\u8a00isprint()\u51fd\u6570\uff1a\u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u662f\u5426\u662f\u53ef\u6253\u5370\u5b57\u7b26
C\u8bed\u8a00islower()\u51fd\u6570\uff1a\u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u662f\u5426\u662f\u5c0f\u5199\u5b57\u6bcd
C\u8bed\u8a00ldexp()\u51fd\u6570\uff1a\u8fd4\u56dex\u4e58\u4ee52\u7684exponent\u6b21\u65b9\uff08\u6b21\u5e42\uff09\u7684\u503c
C\u8bed\u8a00ldiv()\u51fd\u6570\uff1a\u6c42\u4e24\u4e2a\u6570\u7684\u5546\u548c\u4f59\u6570\uff08\u9488\u5bf9long\u7c7b\u578b\uff09
C\u8bed\u8a00ceil()\u51fd\u6570\uff1a\u6c42\u4e0d\u5c0f\u4e8ex\u7684\u6700\u5c0f\u6574\u6570\uff08\u5411\u4e0a\u53d6\u6574\uff09
C\u8bed\u8a00floor()\u51fd\u6570\uff1a\u6c42\u4e0d\u5927\u4e8ex\u7684\u6700\u5927\u6574\u6570\uff08\u5411\u4e0b\u53d6\u6574\uff09

double atof(char *nptr) \u5c06\u5b57\u7b26\u4e32nptr\u8f6c\u6362\u6210\u6d6e\u70b9\u6570\u5e76\u8fd4\u56de\u8fd9\u4e2a\u6d6e\u70b9\u6570
double atoi(char *nptr) \u5c06\u5b57\u7b26\u4e32nptr\u8f6c\u6362\u6210\u6574\u6570\u5e76\u8fd4\u56de\u8fd9\u4e2a\u6574\u6570
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-C\u8bed\u8a00\u51fd\u6570
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-c\u8bed\u8a00

字符数组中删除指定字符的方法:

参考代码:



1、输入部分scanf("%c",&c);紧挨着循环部分,所以你输入完第10个字符,第11个字符就是指定字符c,很有可能是空格。。。。。需要优化

2、for(j=n+1;j<10;j++)
{
i[j]=i[j+1];
}
这个部分当j=9时候会产生数组越界i[10];干扰你后面的答案;(你这个思路需要考虑十分周全,所以建议使用指针)
3、for(n=0;n<9;n++)

输出部分,循环不一定是循环9次,万一是有两个字符和规定字符相同呢?
——————————————————————————
用指针打印相对简单一点
#include <stdio.h>
int main(void)
{
int n;
char i[10],*p;
char c;
for(n=0;n<10;n++)
scanf("%c",&i[n]);
scanf("%c",&c);
p=i;
for(p;p<=&i[9];p++)
if(*p!=c)
printf("%c",*p);
return 0;
}

——————————————————————————————
保存到另一个数组的方法
#include <stdio.h>
int main(void)
{
int n,j=0;
char i[10],*p,a[10]={0};
char c;
for(n=0;n<10;n++)
scanf("%c",&i[n]);
scanf("%c",&c);
p=i;
for(p;p<=&i[9];p++)
{
if(*p==c)
continue;
else
a[j++]=*p;
}
for(n=0;n<j;n++)
printf("%c",a[n]);

return 0;
}

#include "stdio.h"
main()
{
int i,a[10];
char n;
for(i=0;i<10;i++)
scanf("%d",a[i]);
printf("请输入一个字符");
scanf("%c",&c);
for(i=0;i<10;i++)
{
if(a[i]==c)
{
for(j=i+1;j<10;j++)
a[j-i-1]=a[j];
a[j-1]='\0'
}
break;
}
for(i=0;i<9;i++)
printf("%d",a[i]);
}

来不及去运行了,你运行看看 应该没问题!

#include <stdio.h>
#include <stdlib.h>
int main(void){ 
 int n,j; 
 int i[10]; 
 int c; 
 for( n=0; n<10; n++)  {
  //C语言清除键盘输入缓冲区,下面两个方法都可以
  //fflush(stdin);
  rewind(stdin); 
  printf("i[%d]=", n);
  scanf("%d",&i[n]);
 }
 fflush(stdin);
 scanf("%d",&c); 
 for(n=0;n<10;n++) {  
  if(i[n]==c)  {   
   //直接做循环即可,这两个地方有问题
   for(j=n;j<10;j++)   {       
    i[j]=i[j+1];
   }  
  } 
 } 
 for(n=0;n<10;n++) printf("i[%d]=%d
",n,i[n]); 
 
 system("pause");
 return 0;
}

根本原因是因为标准输入缓存区没有清除的缘故,赋值直接就有问题,我把char改成int了,你可以改回来一样的,我是为了方便调试



#include <stdio.h>
void main()
{
int n,j;
char i[10];
char c;
for(n=0;n<10;n++)
scanf("%c",&i[n]);
scanf(" %c",&c);
for(n=0;n<10;n++)
{
if(i[n]==c)
{
i[n]=i[n+1];
for(j=n+1;j<10;j++)
{
i[j]=i[j+1];
}
}
}
for(n=0;n<9;n++)
printf("%c",i[n]);

}
输入这个试试

  • C璇█鍒犻櫎瀛楃涓涓寚瀹氬瓧绗︾殑鏂规硶鏈夊摢浜?
    绛旓細1. 鍩烘湰鏂规硶鏄畾涔涓涓鍑芥暟 `deleteChar`锛岃鍑芥暟闇瑕佷袱涓弬鏁帮細瀛楃涓 `str` 鍜岃鍒犻櫎鐨勫瓧绗 `c`銆傞氳繃閬嶅巻瀛楃涓蹭腑鐨勬瘡涓瓧绗︼紝褰撻亣鍒颁笌 `c` 鐩稿尮閰嶇殑瀛楃鏃讹紝鎵ц鍒犻櫎鎿嶄綔銆備互涓嬫槸璇ユ柟娉曠殑瀹炵幇浠g爜锛歚``c void deleteChar(char *str, char c) { char *ptr = str;while (*ptr != '\...
  • 鎬庝箞鍦c璇█瀛楃鏁扮粍涓垹闄や竴涓瓧绗?
    绛旓細瀛楃鏁扮粍涓垹闄ゆ寚瀹氬瓧绗︾殑鏂规硶锛氳緭鍏ヤ竴涓瓧绗︿覆锛屼互鍥炶溅缁撴潫杈撳叆鎸囧畾瀛楃瀹氫箟涓涓亶鍘嗗瓧绗︿覆鐨勪笅鏍囧彉閲忓拰涓涓柊鐨勫瓧绗︿覆涓嬫爣鍙橀噺寰幆閬嶅巻瀛楃涓诧紝濡傛灉褰撳墠瀛楃涓庢寚瀹氬瓧绗︿笉鍚岋紝鍒欏皢褰撳墠瀛楃鍐欏叆鏂颁笅鏍囦綅缃紝鏂颁笅鏍+1锛堢浉鍚屽垯涓嶅鐞嗭級閬嶅巻涓嬫爣+1妫娴嬩笅涓涓亣鍒板瓧绗︿覆缁撴潫绗︼紝缁撴潫寰幆寰幆缁撴潫鍚庯紝鏂颁笅鏍囦綅缃...
  • c璇█瀛楃鏁扮粍涓垹闄や竴涓瓧绗
    绛旓細瀛楃鏁扮粍涓垹闄ゆ寚瀹氬瓧绗︾殑鏂规硶锛氳緭鍏ヤ竴涓瓧绗︿覆锛屼互鍥炶溅缁撴潫杈撳叆鎸囧畾瀛楃瀹氫箟涓涓亶鍘嗗瓧绗︿覆鐨勪笅鏍囧彉閲忓拰涓涓柊鐨勫瓧绗︿覆涓嬫爣鍙橀噺寰幆閬嶅巻瀛楃涓诧紝濡傛灉褰撳墠瀛楃涓庢寚瀹氬瓧绗︿笉鍚岋紝鍒欏皢褰撳墠瀛楃鍐欏叆鏂颁笅鏍囦綅缃紝鏂颁笅鏍+1锛堢浉鍚屽垯涓嶅鐞嗭級閬嶅巻涓嬫爣+1妫娴嬩笅涓涓亣鍒板瓧绗︿覆缁撴潫绗︼紝缁撴潫寰幆寰幆缁撴潫鍚庯紝鏂颁笅鏍囦綅缃...
  • C璇█-鍒犻櫎瀛楃涓涓寚瀹氱殑瀛楃
    绛旓細鍒╃敤C璇█鍒犻櫎瀛楃涓蹭腑鎵鏈夋寚瀹氱殑瀛楃鏂规硶濡備笅锛1.鍩烘湰鏂规硶鏄紝缂栧啓鍑芥暟fun锛歞eletechar()銆傝繖涓嚱鏁伴渶瑕佹帴鍙椾袱涓弬鏁扮殑浼犲叆锛屼竴涓负璇ュ瓧绗︿覆str锛屽彟涓涓负鎯冲垹闄ょ殑瀛楃c銆傞氳繃瀵规暣涓瓧绗︿覆鐨勯愪釜閬嶅巻锛屽嚒鏄娴嬪埌瀛楃涓篶锛屽垯鍒犻櫎姝ゅ瓧绗︺傚叿浣撳疄鐜颁唬鐮佸涓嬶細2.鍦ㄤ富鍑芥暟锛屽彧闇瑕佹帴鍙楃敤鎴疯緭鍏ョ殑瀛楃涓诧紝鐒...
  • 鐢C璇█缂栧啓浠瀛楃鏁扮粍S涓垹闄瀛樻斁鍦鏁扮粍C涓殑瀛楃鐨勭▼搴,鎬,鍦ㄧ嚎绛...
    绛旓細void deleteChar(char *s,char *c){ int slength= strlen(s);int clength= strlen(c);int* target = (int *)malloc(slength*sizeof(int));for(int i=0;i<slength;i++){ target[i]=0;} for(i=0;i<slength;i++)for(int j=0;j<clength;j++){ if(s[i]==c[j])target[...
  • c璇█涓,鍒犻櫎鏁扮粍涓鐨勬寚瀹瀛楃
    绛旓細string str="abcdefghijklmn";char del='a';for(int i=0;i<str.length();i++){ if(str[i]==del){ for(int j=i;j<str.length()-i;j++)str[j]=str[j+1];} } C++鐨勬牳蹇冨疄鐜伴儴鍒,C璇█澶у悓灏忓紓
  • C璇█:鐢涓涓瓧绗︽暟缁浠庨敭鐩樿緭鍏ヤ竴涓瓧绗︿覆,鍒犻櫎瀛楃涓蹭腑鎵鏈夐潪瀛楁瘝瀛楃...
    绛旓細include <stdio.h> int main(){ char a[80];gets(a);int i, j = 0;for(i=0; a[i]; i++)if((a[i] >= 'a' && a[i] <='z') || (a[i] >='A' && a[i] <= 'Z')){ a[j] = a[i];j++;} a[j] = '\0';puts(a);return 0;} ...
  • C璇█:杈撳叆涓涓瓧绗︿覆鏀惧叆鏁扮粍閲,鍒犻櫎鍏朵腑鐨勭┖鏍
    绛旓細char c,str[N]; printf("杈撳叆瀛楃涓str:\n"); while((c=getchar())!='\n') { str[i]=c;//杈撳叆瀛楃涓 i++; } str[i]='\0'; for(i=0;str[i]!='\0';i++) { if(str[i]==' ') { for(j=i+1;str[j]!='\0';j++) { str[j-1]=str[j]; } str[j]='\0'; } ...
  • c璇█缂栫▼闂 ,杈撳叆甯︽湁鍐掑彿鐨瀛楃涓鍒涓涓暟缁勪腑,瑕佹眰娓呴櫎鍐掑彿鍜屽啋鍙...
    绛旓細include<stdio.h>int main(){char ff[200],*p,*q; gets(ff); for(p=q=ff;*p!=':';p++); for(;*q++=*++p;); puts(ff); return 0;}
  • 甯繖鍐欎釜C璇█缂栫▼棰樸傗滃皢鐢ㄦ埛杈撳叆鐨勪换鎰瀛楃涓涓殑鏁板瓧瀛楃鍏ㄩ儴鍒犻櫎...
    绛旓細鎶婄敤鎴疯緭鍏ョ殑瀛楃涓浠庡乏鑷冲彸閫愬瓧绗﹀悜鍚屼竴涓鏁扮粍涓鎷疯礉锛岄亣鍒版暟瀛楀瓧绗︽椂鎺ユ敹璁℃暟鍙橀噺涓嶅閲忥紝灏变細琚笅涓涓瓧绗瑕嗙洊杩欎釜鏁板瓧瀛楃锛岀洿鍒版妸'\0'涔熸嫹璐濊繘鏉ャ備唬鐮佸涓嬶細include "stdio.h"int main(int argc,char *argv[]){char s[300];int i,j;printf("Please enter a string...\n");fgets(s,...
  • 扩展阅读:c语言字符对照表 ... c语言输出数组下标 ... c语言字母对应数字表 ... c语言删除字符串中的a ... 转义字符对照表 ... c语言字节数对照表 ... c语言字符长度怎么看 ... c语言字符串的输入 ... c语言输出删除前一个字符 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网