编写fun()函数,要求从字符串中删除指定的字符,这是C语言?
#include<stdio.h>
int delchar(char *p,char c)
{
char *q=p;
for(;*p!='\0';p++)
if(*p!=c)*q++=*p;
*q=*p;
}
int main()
{
char s[100],c;
printf("Input a string:\n");
gets(s);
printf("Delete char:");
scanf("%c",&c);
delchar(s,c);
puts(s);
}
思路是:如果字符串中字符不等于指定字符,就保留下来,不然就不保留下来。 char fun(char a[], char s)
{
int i, j;
for (j=i=0;a[i]!='\0';i++)
if (a[i]!=s)
{ a[j]=a[i];
j++;
}
a[j]='\0';
}
如何替换字符数组中的某些字符?C/C++?
用新字符,替换字符数组中的某个字符的过程: 遍历数组,循环检查每一个字符, 如果与待替换字符相同,则进行替换 否则,继续检查下一个 循环结束,输出替换后的字符串 参考代码: #include
c语言字符串讲解?
c语言字符串定义是存入字符的数组。
定义一个数组,数组里存放元素为字符串各个字符+'\0',其中'\0'为码0值,编译器会自动在字符串的末尾添加此值。
在定义这个数组时,指定数组的大小为6,也就是说需要申请6个字节的存储空间,而在等号右侧的双引号中我们却只书写了5个字符。这并不是笔误,C语言规定当使用双引号定义字符串时以'\0'作为这个字符串的结束标志符,也就是说这个字符串一共有6个字符。
在c 语言中,将字符串作为字符数组来处理。(c++中不是)在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C 语言规定了一个“字符串结束标志”,以字符'\0’代表。
C语言采用字符数组储存字符串,在从字符数组中读取字符串时,计算机是按照顺序来读取的,当然如果没有结束标记,计算机就会一直的读取下去(那么一直读取,然后超出了所定义的数组范围。
1.1、什么是字符串常量
C 语言虽然没有字符串类型,但是 C语言提是存在字符串这个概念的,也就是字符串常量:以 NUL 字节结尾的 0 个或多个字符组成的序列。字符串常量是不可被修改的,一般用一对双引号(" ")括起的一串字符来表示字符串常量,如:
"Hello!"、"\aWarning!\a"、"123abc\n"、""
字符串常量可以为空,如""就是一个空的字符串常量,但是即使为空,还是存在一个终止符 NUL 的。(在 C 语言中,常用转义字符 \0 来表示 NUL)
1.2、字符串常量与指针
字符串常量与指针关系密切,因为字符串常量的值,实际上表示的是存储这些字符的内存空间的地址,更准确地说是字符串常量中第 1 个字符的地址,而不是这些字符本身。因此,在 C 语言中是不能直接进行字符串赋值的(因为没有字符串类型嘛)。在 C 语言中,常通过声明一个指向 char 类型的指针并将其初始化为一个字符串常量的方式来访问一个字符串: