用C语言中的指针编写一个删除字符串中重复字符的函数

作者&投稿:良卫 (若有异议请与网页底部的电邮联系)
用指针编写删除字符串中重复字符的函数~

void del(char *p)
{
char *q,*r;
for(q=p;(*q)!='\0';q++)
{
for(r=p;r!=q;r++)
{
if((*q)==(*r))
break;
}
if(r!=q)
{
for(r=q;(*r)!='\0';r++)
{
(*r)=*(r+1);
}
q--;
}
}

}

你的太复杂,给你简化了。
#include
void del(char *a)
{
int i,n=0;
n=strlen(a);
for (i=n;i>0;i--)
if ( *(a+i)== *(a+i-1)) strcpy(a+i-1,a+i);
}

int main()
{
char a[20];
gets(a);
del(a);
puts(a);

return 0;
}
例如输入: abbdd34444Xxx88
输出是: abd34Xx8

#include<stdio.h>
void fun(char *str) { char *p; int f[256],i;
  for ( i=0;i<256;i++ ) f[i]=0;
  p=str;
  while ( *p ) {
    if ( f[*p]==0 ) { *str=*p; str++; }
    f[*p]++;
    p++;
  }
  *str=0;
}
void main() { char str[256];
  gets(str); fun(str); printf("%s
",str);
}


看字符串的长短了,短的可以针对每个字符遍历一次字符串,长的可以用计数器数组(a[128] = 0,出现哪个字符,对应位置值+1,值非0时该字符重复,删除)。

#include<stdio.h>
void shan(char*p)
{
char b_[256]={0},*const b=b_+128;
char*t=p;
while(*p)
{
if(!b[(int)*p])
{
*t++=*p;
b[(int)*p]=1;
}
p++;
}
*t=0;
}
int main()
{
char str[13]="abcabcddeeff";
shan(str);
puts(str);
}
百度这个把缩进都搞没了,抱歉了


C语言指针的用法
\/\/指针所指向的的类型是int (4)int(*ptr)[3];\/\/指针所指向的的类型是int()[3](5)int*(*ptr)[4];\/\/指针所指向的的类型是int*()[4]在指针的算术运算中,指针所指向的类型有很大的作用。指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把...

c语言中用指针求1到100的质数
下面是一个用指针求1到100的质数的C语言代码示例:include <stdio.h> int main(){ int i, j;int is_prime;int primes[100];int *p = primes;for (i = 2; i <= 100; i++) { is_prime = 1;for (j = 2; j < i; j++) { if (i % j == 0) { is_prime = 0;break;...

分别用行指针和指向元素的指针求整形二维数组中的最大元素及其所在的行...
printf("\\n行指针结果:\\n");printf("max:%d 下标:%d,%d %d行%d列\\n", max, result[0], result[1], result[0] + 1, result[1] + 1);result = colPoint(arr[0], &max);printf("列指针结果:\\n");printf("max:%d 下标:%d,%d %d行%d列\\n", max, result[0], result...

用C语言中的指针编写一个删除字符串中重复字符的函数
include<stdio.h>void fun(char *str) { char *p; int f[256],i; for ( i=0;i<256;i++ ) f[i]=0; p=str; while ( *p ) { if ( f[*p]==0 ) { *str=*p; str++; } f[*p]++; p++; } *str=0;}void main() { char str[256]; gets(str); ...

#c语言#利用指针编写程序, 对具有10个元素的字符型数组,从下标为6的...
include <stdio.h>int main(){char s[10],*p=&s[6];gets(s);while(*p!=0)*(p++)='#';printf("%s",s);return 0;}

c语言关于指针的求解
int x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1;(A) x[3]\/\/ x[3]=3 数组从0开始,3其实是第四个 (B) p1 = x + 3, *p1++ \/\/先执行p1=x+3,也就是指向x[3],因为p1定义成指针。*p1++ 这时候先执行再加,这表达式仍然是3 (C) p1 = x + 2, *(...

论述C语言中指针的概念和作用,并举例说明
p;\/*定义一个指针变量P*\/ p=&a;\/*让p指向a的首地址,也就是a的地址*\/ 程序为a分配一个2个字节的存储单元,假如2个字节的地址分别为(ABCD1和ABCD2,唯一),那么p里面放的值就是ABCD1,不是3。这时可通过p直接引用a,实际上*p=3。以后不管a存放在内存中的哪个地方,只用通过调用p就可以...

C语言实验六实验报告——指针
 2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。要求:(1)整数数组由初始化方式输入。任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。3.编写函数newcopy(char*new,char*old...

C语言,利用指针编写程序:删除一个字符串中的某一个字符
你好!p,q是指针,*p,*q表示p,q指向的地址储存的字符 ++是自增运算符,*q++=*p表示将当前p指向的地址储存的值赋值给q指向的地址,赋值完成后q++,即q指向下一位地址 根据程序来说:for(p = s, q = s; *p! = '\\0'; p++) if(*p != del_x) *q++ = *p;*q = *p;...

C语言程序设计之中的 指针排序
include<stdio.h>void input(int *p,int num){\/\/int a[10]; 不能在子函数中再定义了,要用形参对应的实参, 子函数中定义的是局部变量,函数完成时,变量就释放了。\/\/for(p=a;p<a+10;p++)int i;for(i=0;i<num;i++)scanf("%d",p+i);}void sort(int *p,int num){\/\/int a[...

新都区13261439907: 编程c程序,编写函数deletechar,通过指针操作,将一个字符串中的指定字符删除
车楠云芝: #include<stdio.h> void deletechar(char c, char *s) { char *p=s; for(int i=0;s[i]!='\0';){ if(s[i]==c){i++;continue;} *p++=s[i++]; } *p='\0'; } int main(void) { char c,str[]="ldkfssjklssjfsj"; puts(str); printf("请输入要删除的字母:"); scanf("%c",&c); deletechar(c,str); puts(str); return 0; }

新都区13261439907: C语言 删除字符串中的指定字符'*',要求用指针,谢谢~ -
车楠云芝: #include intmain() { charstr[100]; char*p,*q; charc; gets(str); c=getchar(); for(p=str,q=str;*p!='\0';p++)//用指针*p去提取str中每一个元素,用指针*q去删除str中需要删除的元素 if(*p!=c) *(q++)=*p; *q=*p; puts(str); return0; } 扩展资料: 其它方法: ...

新都区13261439907: 用c语言编写一个使用指针删除字符串中空格的程序
车楠云芝: 方法一: #include&lt;stdio.h&gt; void main() { char str[81],*p; int i,word=1; gets(str); for(p=str;*p!='\0';p++) if(*p==' ') word++; printf("%d",word); } 方法二: #include&lt;stdio.h&gt; void main() { int tongji(char *p); char str[81]; gets(str); printf("%d\n...

新都区13261439907: 新手求助:c语言,用返回值为指针的函数,编写一个在某字符串中删除某个字符的函数.
车楠云芝: 你这个程序第一个主要问题在你没弄懂指针的含义,,因为*p代表着指针p所指向的空间,而p才代表着储存空间地址,同理str2这个数组名代表着数组第一个元素的位置,所以你在定义p时应该让p=str2;第二个问题是你应该把return str2;放在...

新都区13261439907: C语言 指针 删除字符串的一部分 在线等 -
车楠云芝: 代码如下::#include int del_substr(char *str,char *substr ) { int count=0,count1=0,i,j=0,k; char *s; char *s1; s=str; while((*s)!='\0')//求源字符串的长度 { count++; s++; } s1=substr; while((*s1)!='\0')//求子字符串的长度 { count1++; s1++; } s=str; s1=...

新都区13261439907: 用c语言编写一个使用指针删除字符串中空格的程序 -
车楠云芝: #include <iostream> using namespace std; int main() { char c[]= "this is a test character string"; char *p = c; char *t = NULL; while(*p != '\0') { if (*p == ' ') { //空格以后的所有字符串前移一个位置 t = p; while(*t != '\0') { *t = *(t+1); t++; } } p++; } p = c; while(*p != '\0') { cout << *p++; } cout << endl; return 0; }

新都区13261439907: 用c语言指针编写程序,删除字符串的所有尾部空格 -
车楠云芝: #include <stdio.h>#include <string.h> void modify(char *str) //去空格函数 { int i = strlen(str); while(str[i-1]==' ') { str[i] = '\0'; i--; } str[i] = '\0'; } void main() { char s[] = "SSSS s s@#$ "; printf("first: %s", s); puts("###"); //标记作用 modify(s); printf("second: %s", s); puts("###"); //标记作用 }

新都区13261439907: C语言删除字符串中的指定字符. 指针1为为字符串,指针2为指定字符. -
车楠云芝: int main() {char s[100],k[100];char c;int i=0,j=0,sum=0; printf("请输入字符串\n");gets(s); printf("请输入需要去除的字符\n");scanf("%c",&c); while(s[i]!='\0'){if(s[i]==c){sum++;}else{k[j]=s[i];j++;}i++;}k[j]='\0';printf("删除特殊字符个数=[%d]\n",sum);printf("删除后字符串=[%s]\n",k); }

新都区13261439907: C语言初学者用一个指针删除字符串中的空格.. -
车楠云芝: 用一个字符指针,if不是空格,就依次输出

新都区13261439907: C语言 - 删除字符串中的字符. -
车楠云芝: c语言中书写删除字符串中某个字符的程序的具体操作步骤如下: 1、编写头函数,包括“#include <stdio.h>.”与“#include <string.h>.“. 2、定义两个相同容量的字符串储存的变量 char a【100】; char b【100】.以及整数变量 int c;int i=0,j...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网