比如说要删除一个字符数组S中的第I个位子起的第M个的字符,可以这样吗
s[i]='\0';
如果比行的话,请各位大哥给我个完整的程序,小弟我好对照学习
谢拉哈
----------------解决方案--------------------------------------------------------
第I个位子起的第M个的字符??
什么意思啊
说清楚点!
----------------解决方案--------------------------------------------------------
你这样好象只是把原来的字符换成了结束符
----------------解决方案--------------------------------------------------------
//花了点时间,帮你做好了, //看看把,如有不懂的地方, //加我 `qq;417111349 //可以这样截断一个字符串吗 //比如说要删除一个字符数组S中的第I个位子起的第M个的字符, //可以这样吗 //s[i]='\0'; //如果比行的话,请各位大哥给我个完整的程序,小弟我好对照学习
#include <stdio.h> #include <string.h> #include <stdlib.h>
#define MAXSTRINGSIZE 100
void delate(char arry[],int n,int begin,int num);
void delate(char arry[],int n,int begin,int num) { char * str; int i; str=(char *)malloc((n-begin-num+1)*sizeof(char)); if(!str) exit(1); for(i=begin+num-1;i<n;i++) { str[i-begin-num+1]=arry[i]; }
str[i-begin-num+1]='\0'; arry[begin+num-2]='\0'; strcat(arry,str); puts("the string after delating is as following:"); puts(arry); }
void main() { char string[MAXSTRINGSIZE]; int length; int begin; int num; puts("please enter the string :"); gets(string); length=strlen(string); do { printf("please enter the begning position(1~%d):\n",length); scanf("%d",&begin); fflush(stdin); }while(begin<1||begin>length); do { printf("please enter the delating position:(1~%d)\n",length-begin+1); scanf("%d",&num); fflush(stdin); }while(num<1||num>length-begin+1); delate(string,length,begin,num); }
----------------解决方案--------------------------------------------------------
楼主如果没错的话题目应该是这样吧?:删除一个字符串中第i字符起后面的m个字符(包括第i个),楼主说的把第i个换成‘\0’不行,如果那m个后面还有字符呢?你这样做是把前i个字符留住,后面的都被删掉了
[此贴子已经被作者于2005-4-30 14:10:28编辑过]
----------------解决方案--------------------------------------------------------
这里给你主要的部分:
for(No=i;No<strlen(s)-m;No++)
s[No]=s[No+m];
s[No+1]='\0';
----------------解决方案--------------------------------------------------------