user-0 提问: 删除字符

回复:
user: user-1
content: 引用 2 楼 ldsh304的回复:#include <stdio.h> #include <string.h>  /* 	删除字符串dest中的字符ch 	返回值：删除个数 */ int delchar (char *dest,const char ch) { 	int count = 0;     char *p = dest;     int i = 0;     for (; i < strlen(dest); )     {     	if (dest[i] == ch)     	{ 			strcpy(dest+i, dest+i+1); 			count++;     	}     	else     	{     		i++;     	}     }     return count; }  int main () {     char s[80];     char ch;     int count;          printf("pls input ch:\n");     ch=getchar();     printf("pls input s:\n");     scanf("%s",s);     count = delchar(s,ch);     if (count == 0)     	printf("删除失败，没有元素%c\n", count, ch); 	else printf("已成功删除%d个元素！\n", count);     printf("%s",s);     return 0; }  为什么dest+i不能写成dest[i]

user: user-2
content: //char (*(*x[3])())[5];//x是什么类型的变量? // //分析C语言声明，关键是搞清楚这个变量是个什么东西（函数、指针、数组）， //是函数那么剩下的就是他的参数和返回值， //是指针那剩下部分是说明他指向什么， //是数组剩下的部分就是说明数组的成员是什么类型。 //解析C语言声明规则： //从左侧第一个标识符开始，按照优先级进行结合。*表示是..的指针，const表示只读的，volatile表示可变的，[]表示是数组，()表示是函数。 // //x和[3]结合说明是一个大小为3的数组，该数组的每个元素为一类指针，该类指针指向一类函数，该类函数无参数，返回一类指针，该类指针指向一个大小为5的char型数组 #include <stdio.h> #include <typeinfo.h> char num[5]; char (*x00())[5] {     return # } int main() {     char (*(*x[3])())[5];//是个数组，大小为3     char (*(*x0  )())[5];//数组的元素，是个函数指针     char (*( x00 )())[5];//函数原型，参数为空，返回值为指针     char (*  x000   )[5];//返回值      x0 = x00;     x[0] = x0;     x[1] = x0;     x[2] = x0;     printf("typeid(x).name() is %s\n",typeid(x).name());     return 0; } //typeid(x).name() is char (* (__cdecl**)(void))[5]

user: user-2
content: A[B] *(A+B) *(B+A) B[A] //以上四行等价  "abc"[1] *("abc"+1) *(1+"abc") 1["abc"] //以上四行等价  A[0] *(A) 0[A] //以上三行等价

user: user-2
content: 引用 3 楼 u012924019 的回复:好简单粗暴的提问方式，直接拍照。 打字都懒得打了。自己的分析呢？ 哎。。。。现在的学生啊。。。。 很多时候，使用的工具越先进，人越笨；得到得越轻松，人越懒。

user: user-2
content: 仅供参考：#include <stdio.h> #include <string.h> char s[256]; char *p; int r,n,i; int main() {     while (1) {         printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");         fgets(s,256,stdin);         if ('\n'==s[0]) break;         p=s;         while (1) {             p=strstr(p,"%20");             if (p) {                 memmove(p+1,p+3,strlen(p)-3+1);                 p[0]=' ';             } else break;         }         p=s;         while (1) {             p=strstr(p,"你懂得");             if (p) {                 memmove(p+6,p+6,strlen(p)-6+1);                 for (i=0;i<6;i++) p[i]='X';             } else break;         }         printf("%s",s);     }     return 0; } //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //abcdefg%20helloworld%20something.pdf //abcdefg helloworld something.pdf //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //这是测试文字你懂得，在这个你懂的地方，就得做你懂得的事 //这是测试文字XXXXX，在这个你懂的地方，就得做XXXXX的事 //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //

user: user-3
content: 好简单粗暴的提问方式，直接拍照。 打字都懒得打了。自己的分析呢？ 哎。。。。现在的学生啊。。。。

user: user-4
content: #include <stdio.h> #include <string.h>  /* 	删除字符串dest中的字符ch 	返回值：删除个数 */ int delchar (char *dest,const char ch) { 	int count = 0;     char *p = dest;     int i = 0;     for (; i < strlen(dest); )     {     	if (dest[i] == ch)     	{ 			strcpy(dest+i, dest+i+1); 			count++;     	}     	else     	{     		i++;     	}     }     return count; }  int main () {     char s[80];     char ch;     int count;          printf("pls input ch:\n");     ch=getchar();     printf("pls input s:\n");     scanf("%s",s);     count = delchar(s,ch);     if (count == 0)     	printf("删除失败，没有元素%c\n", count, ch); 	else printf("已成功删除%d个元素！\n", count);     printf("%s",s);     return 0; }

user: user-5
content: #include <stdio.h> #include <stdlib.h> #include <string.h>   char * delchar(char a[],char ch) { 	char *b; 	int len , i , j = 0; 	len = strlen (a); 	b = (char *)malloc(len * sizeof(char)); 	for(i = 0 ; i < len ; i++) 		if(a[i] != ch) 		{ 			b[j] = a[i]; 			j++; 		} 	b[j] = '\0'; 	return b; }  int main () { 	char a[100] , *b , ch; 	int len; 	printf ("请输入字符串：");  	gets(a); 	printf ("请输入字符：");  	scanf("%c",&ch); 	len = strlen (a); 	b = (char *)malloc (len * sizeof (char)); 	b = delchar(a,ch); 	printf("%s\n",b); 	return 0; }