C语言中删除字符串中的重复字符,然后输出新的字符串
#define N 100 //定义最多可以测试100个字串 #define M 100 //定义每个字串最长100 #define END "End!" //定义结束输入的字串 #include #include #include int issame(char *p[],char *f,int n){int i;for(i=0;i<=n;i++)if(strcmp(p[i],f)==0) return 1;return 0;}int main(void){char *p[N];int i=0,total;int count=0;printf("请输入不多于%d的字符串,以End!为结束
",N);while(1){p[i]=(char *)(malloc(M)); //定义每个字串最长为100 printf("第%d个字串:",i+1);gets(p[i]);if (strcmp(p[i],END)==0) break; //如果输入了结束标记则结束输入 i++;}total=i-1; //计算总共输入了多少字串 printf("以下得出不同的字串
");for(i=0;i<=total;i++){if(issame(p,p[i],i-1)==0){ //检查是否与前面输入的字符一致count++;printf("%d%s
",count,p[i]);}}}
#include
#include
int Delete(char a[],int n)
{
for(int i=0;i<n;i++)
{
if(a[i]==a[n])
return 0;
}
return 1;
}
void main()
{
int i,j,n;
char a[1000];
printf("请输入字符串内容:
");
scanf("%s",&a);
n=strlen(a);
for(i=1;i<n;i++)
{
if(Delete(a,i)==0)
{
n--;
for(j=i;j<n;j++)a[j]=a[j+1];
i--;
}
}
a[n]='\0';
printf("删除相同字符后的字符串为:
");
printf("%s
",a);
}
你试一试这个看看
#include <stdio.h>
#include <string.h>
int main()
{
char c,str[80];
int i=0,j,k,len;
printf("input:");
gets(str);
len=strlen(str);
c=str[i];
while(c!='\0')
{
for(j=i+1;str[j]!='\0';j++)
{
if(str[j]==c)
{
for(k=j;str[k]!='\0';k++)
str[k]=str[k+1];
len--;
}
}
c=str[i++];
}
puts(str);
getchar();
}
改动后可以运行了,你的错误:
1.包含的第二个头文件少写个h
2.在发现重复字符后需要删除时,if语句里for循环使用了j和外面大循环的j重复,会造成不可预料的错误
3.else后面的赋值不正确,应该等第一个for循环结束后,而不是if判断后
这个可以了!
#include <stdio.h>#include <string.h>void main(){ char str[80]; int j,len,i,k; printf("input:"); gets(str); len=strlen(str); for(i=0;i<=len;i++) { for(j=i;j<=len;j++) { if(str[j]==str[i]) { k=i; while(str[k]!=0) { str[k]=str[k+1]; k++; } len--; } } } puts(str);}
你的程序我就懒得看啦。不过呢,可以根据我的经验给你个思路。可以来一个类似于冒泡法的算法函数,逐一循环比较该字符串的ASCII码值,相同去掉,不同丢到一个数组中去。
C语言删除字符串中指定字符的方法有哪些?
1. 基本方法是定义一个函数 `deleteChar`,该函数需要两个参数:字符串 `str` 和要删除的字符 `c`。通过遍历字符串中的每个字符,当遇到与 `c` 相匹配的字符时,执行删除操作。以下是该方法的实现代码:```c void deleteChar(char *str, char c) { char *ptr = str;while (*ptr != '\\...
怎么用c语言删除字符串中的字符?
1、输入:第一行是一个字符串; 第二行是一个字符。2、输出:删除指定字符后的字符串。二、设计思路:1、 同插入问题,定义两个字符数组a,b。以及标志删除位置的int型pos。2、用gets函数输入数组a的值,并利用for循环将数组a copy到 数组b。3、利用for循环,令pos位的数组b元素赋值到a。三、...
利用C语言删除字符串中所有指定的字符是什么意思?
利用C语言删除字符串中所有指定的字符方法如下:1.基本方法是,编写函数fun:deletechar()。这个函数需要接受两个参数的传入,一个为该字符串str,另一个为想删除的字符c。通过对整个字符串的逐个遍历,凡是检测到字符为c,则删除此字符。具体实现代码如下:2.在主函数,只需要接受用户输入的字符串,然...
c语言中怎样写删除字符串中某个字符的程序啊?
c语言中书写删除字符串中某个字符的程序的具体操作步骤如下:1、编写头函数,包括“#include <stdio.h>.”与“#include <string.h>.“。2、定义两个相同容量的字符串储存的变量 char a【100】; char b【100】。以及整数变量 int c;int i=0,j=0;其中a[100]是存字符串的,b【100】是...
C语言“在字符串中删除指定的字符”怎么编写程序?
从字符数组中删除特定的字符,即输入要删除的指定字符,利用for循环找到非指定字符,将非指定字符输出即可。以下为具体的实现方法:include<stdio.h> int main(){ char str[100],c;int j,k;printf("please input a string:");gets(str);printf("\\nEnter a character:");c=getchar();for(j=...
C语言如何去掉字符串中换行符
当Replace函数应用于数组时,它会对数组中的每个元素进行查找和替换。如果替换的元素数量少于查找到的,剩余的元素将被替换为空字符串。如果仅对数组中的一个元素进行替换,那么替换字符串会作用于所有找到的匹配项。通过以上操作,你可以方便地在C语言中移除字符串中的换行符,确保字符串格式的整洁性。
c语言中怎样用一个函数删除字符串中的一个元素?
include <string.h> void remove_char(char *str, char c) { int i, j;int len = strlen(str);for (i = 0, j = 0; i < len; i++) { if (str[i] != c) { str[j++] = str[i];} } str[j] = '\\0';} int main() { char str[] = "Hello, world!";char c ...
C语言如何实现删除字符串中的字符
C语言删除字符串中指定字符可以参考下面的代码:include<stdio.h> 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指向字符串首...
C语言 删除字符串中指定下标
没有特定的字符,但是可以通过代码完成你想要的操作。代码如下:include<stdio.h> int main(){ char s[100],*p ,*q ;puts("输入小于100个字符:");gets(s);char del_x;printf("输入要删除的字符:");scanf("%c",&del_x);for(p=s,q=s;*p!='\\0';p++)if(*p!=del_x)*q++=*p;...
C语言,利用指针编写程序:删除一个字符串中的某一个字符
2、其次就是要定义两个相同容量的字符串储存的变量 char a[100]; char b[100];。以及整数变量 int c; int i=0,j=0; 其中a[100]是存字符串的,b【100】是存你删除对应字符的字符串的,整数C是你想删除第几位。j ,i 是后面for循坏中要使用到的变量。3、 printf("请输入你的字符串...
其玛麦安: 程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除#include<stdio.h> void main() { char a[100],b[100]; //定义两个字符组,a[100]用来接收输入的字...
白塔区15859861511: C语言编写一个函数,将字符串中连续重复出现的字符去除 - ?
其玛麦安: C语言自定义函数,一次性去除连续重复字符,参考代码如下: #include<stdio.h> char *fun(char *str) { int i=1,j=0; if(str==NULL) return NULL; if(str[0]==0) return str; while(str[i]!=0) if(str[j]!=str[i]) str[++j]=str[i++]; else ++i; str[j+1]=0; return str; } int main() { char str[500]; gets(str); puts(fun(str)); return 0; }
白塔区15859861511: c语言删除重复字符 - ?
其玛麦安: 你这个代码是删除字符串中的a,不是删除重复的字符,而且用来过度的F[]没有用到,问题比较多,试下这个!Char f[27]; Int I=0,j,k=0; While(chr[i++]!=\0) {for(j=0,j<27,j++) If chr[i]==chr[j] Else f[k++]=chr[i]; } For (j=0,j<27,j++) Chr[j]=f[j]
白塔区15859861511: c语言,删除字符串中的重复字符. - ?
其玛麦安: 1)肯定要加return j,因为 int fun(int a[], int n)函数完成的功能是把无重复的数放到数组0到j. 2)图片说明如下:
白塔区15859861511: c语言 在字符串中删除与某字符相同的字符 急! - ?
其玛麦安: scanf_s("%s", a); printf("Input a character : ");改为:scanf_s("%s", a); getchar(); printf("Input a character : ");因为当把a字符串输完后,你会按回车键,但回车键也算一个字符.它被读入到了字符word中.
白塔区15859861511: 求C语言代码,删除字符串中重复字符 - ?
其玛麦安: #include #include int main() { std::string str = "aabbcc"; std::cout << "Before: " << str << std::endl; str.erase(std::unique(str.begin(), str.end()), str.end()); std::cout << "After: " << str << std::endl; return 0; }
白塔区15859861511: C语言 输入一个字符串 去掉重复的字符,输出无重复的 - ?
其玛麦安: #include<stdio.h>#include<string.h> main() {int i,a[127]={0}; char s[100]; printf("Enter a string:\n"); gets(s); for(i=0;i<strlen(s);i++) if(a[(int)s[i]]==0) {a[(int)s[i]]=1; printf("%c",s[i]);} printf("\n"); }
白塔区15859861511: 如何用C语言删除一个字符串中的相同字符? 写主要部分哈!非常感谢! - ?
其玛麦安: for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if(a[j]==a[i]) a[j]='^'; m=1; for(i=1;i<N;i++) if(a[i]!='^') a[m++]=a[i]; a[m]='\0'; 思路,找到每一个字符后面和它相同的字符,换为一个特殊字符.然后再把特殊字符去掉.记得新串要结束.
白塔区15859861511: 求大神!怎么用c语言删除字符串里的重复字符比如输入aa++////9输出aa+/9(字母和数字可以 - ?
其玛麦安: 参考代码如下:#include <stdio.h> #include <string.h> int GetResult(const char *input, char *output) {int i, j, k = 0;int flag;int length;//判断输入和输出数组是否有值if(input == NULL || output == NULL){return -1;}length=strlen(input);//求数组...
白塔区15859861511: 怎样用c语言编写删除重复字符的程序 - ?
其玛麦安: 如果是简单的字符串判断,就蜗牛*赤焰 的方法就可以了~~~ 就如蜗牛*赤焰提到的如果字符串中含有判断的字符就会有点麻烦了,这时候可以试一下有一个标志位来判断,标志输入的字符是否重复的,如下面的程序:(这样会比较麻烦,下面的...