发布网友 发布时间:2022-04-20 17:13
共16个回答
懂视网 时间:2022-04-17 19:07
删除字符串中的指定字符在字符串太多的情况下不可能人为的去删除,那么如何更方便得删除删除字符串中的指定字符?以下为具体解决方法:
产品名称:Dell
产品型号:Dell 灵越5000
系统版本:Windows 10
软件版本:null
1.头函数:
其实头函数每个都需要用到的就是#include
2.其次就是要定义两个相同容量的字符串储存的变量 char a[100]; char b[100];。以及整数变量 int c; int i=0,j=0; 其中a[100]是存字符串的,b【100】是存你删除对应字符的字符串的,整数C是你想删除第几位。j ,i 是后面for循坏中要使用到的变量。
3.printf("请输入你的字符串"); scanf("%s",a); printf("请输入你想要删除第几位字符"); scanf("%d",&c);
这几行代码主要是显示界面,以及你具体想要删除什么字符串以及具体删除第几位字符使用的。
4.for(i=0;i<strlen(a);i++){ if(i+1!=c) { b[j]=a[i]; j++; } } printf(" %s",b); } 这几行代码逻辑语句是:只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。
5.最后就给大家完整的看一下整体的一个代码流程:
#include
以上便是针对该问题所整理出来的具体操作步骤,希望可以帮助到需要的朋友。
热心网友 时间:2022-04-17 16:15
一、问题描述:从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。
1、输入:第一行是一个字符串; 第二行是一个字符。
2、输出:删除指定字符后的字符串。
二、设计思路:
1、 同插入问题,定义两个字符数组a,b。以及标志删除位置的int型pos。
2、用gets函数输入数组a的值,并利用for循环将数组a copy到 数组b。
3、利用for循环,令pos位的数组b元素赋值到a。
三、实现代码如下:
四、编译并执行,运行结果如下:
扩展资料
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:gets(s),其中s为字符串变量(字符串数组名或字符串指针)。
gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。
gets(s) 函数中的变量s为一字符串指针。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。宽字符版本,当使用unicode宽字符文本时,使用这个函数 _getws();在C11标准中被删除,可用C标准库中的fgets代替.
参考资料:百度百科 gets
热心网友 时间:2022-04-17 17:33
一、问题描述:从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。
1、输入:第一行是一个字符串; 第二行是一个字符。
2、输出:删除指定字符后的字符串。
二、设计思路:
1、 同插入问题,定义两个字符数组a,b。以及标志删除位置的int型pos。
2、用gets函数输入数组a的值,并利用for循环将数组a copy到 数组b。
3、利用for循环,令pos位的数组b元素赋值到a。
三、实现代码如下:
四、编译并执行,运行结果如下:
扩展资料:
函数性能增强:
只需要进行一次对目标字符串的遍历即可完成删除目标字符的功能,具体的代码如下所示:
具体执行结果同上。
热心网友 时间:2022-04-17 19:07
#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;
*q=*p;
puts(s);
return 0;
}
热心网友 时间:2022-04-17 20:59
利用C语言删除字符串中所有指定的字符方法如下:
1.基本方法是,编写函数fun:deletechar()。这个函数需要接受两个参数的传入,一个为该字符串str,另一个为想删除的字符c。通过对整个字符串的逐个遍历,凡是检测到字符为c,则删除此字符。具体实现代码如下:
2.在主函数,只需要接受用户输入的字符串,然后调用deletechar()函数,最后输出结果即可。主函数代码实现部分如下:
扩展资料:
1.remove()是C语言中的函数,一般作用是删除数组、链表对象所有的元素。函数原型是
2.remove()函数用于删除指定的文件,其原型如下:
参考资料:remove()函数-百度百科
热心网友 时间:2022-04-17 23:07
字符串其实是一个数组。你把后面的abcd依次移到****位置上。然后让字符串结束就好了。
符串或串(String)是由零个或多个字符组成的有限序列。一般记为 s='a1a2???an'(n>=0)。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
[编辑本段]字符串函数
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat(‘11’,'aa’)='11aa’;
2. 求子串。 Copy(s,I,L) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy(‘abdag’,2,3)=’bda’
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’
4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’
5. 求字符串长度 length(s) 例:length(‘12abc’)=5
在ASP中 求字符串长度用 len(s)例: len("abc12")=5
6. 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.
例:pos(‘ab’,’12abcd’)=3
7. 字符的大写转换。Upcase(ch) 求字符ch的大写体。
例:upcase(‘a’)=’A’
8. 数值转换为数串。 过程 Str(x,s) 把数值x化为数串s.
例:str(12345,s); 结果s=’12345’
9. 数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则I=0,不成功则I为无效字符的序数
例:val(‘1234’,x,I);结果 x:=1234
热心网友 时间:2022-04-18 01:31
利用指针对字符串进行字符串数据重新组织,可以很方便的完成删除指针字符。参考代码如下:
#include <stdio.h>热心网友 时间:2022-04-18 04:13
#include <stdio.h>
char fun(char str[20],char ch)
{ int i,j;
for(i=0;str[i]!='\0';i++)
if(str[i]==ch) {for(j=i;str[j]!='\0';j++) str[j]=str[j+1]; }
}
void main()
{ char str[20],ch;
printf("enter a string :");
gets(str);
printf("enter you want delete letter : ");
ch=getchar();
fun(str,ch);
printf("%s",str);
}
热心网友 时间:2022-04-18 07:11
String s = "abcabcabc";//你的串
s=s.replace("", "-"); //每个字符加个-
String b[]=s.split("-");//截取字符串为数组
String n="";//新的字符传
int f=0;//b的循环变量
int y=0;//c的循环变量
for(int i = 0;i<b.length;i++){//循环数字
if(b[i]!=null&&b[i].trim().length()!=0){
if(b[i].equals("b")){
f++;
if(f==2){
b[i]="";
}
}
if(b[i].equals("c")){
y++;
if(y==3){
b[i]="";
}
}
}
n+=b[i];
}
System.out.println(n);
热心网友 时间:2022-04-18 10:25
/**
* 替换str字符串中第 ind 个字符串 rep,返回结果
* @param str 需要处理的字符串
* @param ind 替换第几个
* @param rep 替换字符串
* @return
*/
public String replaceByIndex(String str, int ind, String rep){
String result = "";//盛放结果
int tmp_i = 0;//记录下标
String tmp_str = "";//记录处理的字符串
for(int i=0; i<ind; i++){
tmp_str = str.substring(tmp_i);//
if(i!=ind-1){
result = result + tmp_str.substring(0, tmp_str.indexOf(rep)+1);//将前面不符合的放到结果字符串
tmp_i = tmp_i+tmp_str.indexOf(rep)+1;//设置剩余需要处理字符串起始位置在原始字符串的下标
System.out.println(result);
}else{
result = result + tmp_str.replaceFirst(rep, "");//符合第几个条件后,替换首个字符串,然后合并到结果字符串
System.out.println(result);
}
}
return result;
}
//测试方法
int ind = 1;//去掉第ind个
String rep = "a";//去掉什么字符串
String str = "abcabcabcabc";
String result = replaceByIndex(str, ind, rep);
热心网友 时间:2022-04-18 13:57
public class Test7 {
public static void main(String[] args) {
String s = "abcabcabc";
String s1 = deleteAssignChar(s, 2, 'c');
System.out.println(s1);
}
public static String deleteAssignChar(String str, int on, char c){
int count = 0;
for(int i=0;i<str.length();i++){
if(str.charAt(i) == c){
count++;
if(count == on){
str = str.substring(0, i) + str.substring(i + 1);
}
}
}
return str;
}
}
第一个参数是要删除字符的字符串,第二个参数字符所在字符串中的第几个,第三个参数要删除的字符.希望对你有帮助
热心网友 时间:2022-04-18 17:45
#include <stdio.h>
int main()
{
void delete(char *s, int n);
char *str, *p=str, letter;
int num=0;
printf("输入字符串:\n");
scanf("%s", str);
printf("输入要删除的字符:");
getchar(letter);
while(letter!='\n')
{
while(*p++!='\0') num++;
delete(str, letter, num);
printf("输出处理后的字符串:\n");
printf("%s", str);
printf("输入一个非\'\\n\'字符结束:");
getchar(letter);
}
return 0;
}
void delete(char *s, char l, int n)
{
int i, j;
for(i=0; i<n; i++)
{
if(l==*(s+i))
{
for(j=i; j<n-1; j++)
{
*(s+j)=*(s+j+1);
}
*(s+n--)='\0';
}
}
}
热心网友 时间:2022-04-18 21:49
#include <stdio.h>
#include <stdlib.h>
void del(char *s,char c)
{
int i = 0,j = 0;
for(i=0;s[i]!='\0';)
{
if(s[i]==c)
{
for(j=i;s[j]!='\0';j++)
{
s[j]=s[j+1];
}
}
else
{
i++;
}
}
}
void main(void)
{
char s[80]={0};
char c;
gets(s); //从输入流读取一行,直至遇到换行符,windows回车键盘包含换行:\r\n
//getchar(); //从输入流读取一个字符,把这行注释掉
c=getchar(); //再读取一个字符
del(s,c); //执行删除函数
puts(s); //输出字符至输出流
system("PAUSE");
/*按照你写的,你可以试试输入一个行字符串,回车一次,再回车一次,再输入删除字符*/
/*gets的作用是从输入流读取一行数据直到遇到换行符,所以你第一次回车是gets函数读取的*/
/*第二次回车,是getchar()读取的,再输入一个字符才是你读取的欲删除的字符*/
}
热心网友 时间:2022-04-19 02:11
public static void main(String[] args) {
String param = "abcdabcd";
int[] array = {1, 3, 5};//你想要替换字符串的位置
System.out.println(deleteAll(param, array));
}
public static String deleteAll(String source, int arg[]) {
char[] array = source.toCharArray();
String[] arrayStr = new String[array.length];
for (int i = 0; i < array.length; i++) {
arrayStr[i] = String.valueOf(array[i]);
}
for (int key : arg) {
arrayStr[key - 1] = "";
}
StringBuffer strBuf = new StringBuffer();
for (String string : arrayStr) {
if (!"".equals(string)) {
strBuf.append(string);
}
}
return strBuf.toString();
}
热心网友 时间:2022-04-19 06:49
#include<stdio.h>
#include<string.h>
int main()
{
int i;
char s[80],c;
void delchar(char *s,char c);
printf("Input a string: ");
i=0;
while((s[i]=getchar())!='\n'){
i++;
}
s[i]='\0';
printf("Input a character: ");
c = getchar();
delchar(s,c);
printf("After deleted, the string is:");
printf("%s\n",s);
return 0;
}
void delchar(char *s,char c){
int i = 0, j = 0;
char tmp[80];
while(s[i]!='\0'){
if(s[i++] != c)
tmp[j++]= s[i-1];
}
tmp[j] = 0;
strcpy(s, tmp);
}
热心网友 时间:2022-04-19 11:43
char * fun(char * s)
{
char *s1 = s; //s1指向字符串首地址
while((*s!='?')&& (*s!=0) ) //字符不为结束符或者不为?,指向下一个字符
s++;
*s=0; //将这个字符置为结束符
return s1;
}
main函数直接调用这个函数就可以了。