本文目录一览:
1、C语言 输入一个字符串 利用指针 删除它的空格字符~ 2、C语言中去掉空格问题 3、c语言 字符串去掉空格 4、C语言 删除字符串的所有前导空格
C语言 输入一个字符串 利用指针 删除它的空格字符~
1、添加一个字符串函数,因为程序里面涉及到了输出和输入字符串以及字符。#include string.h
。
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);
5、只要当i+1不等于c时把a[i]里面的字符赋给b[i],那么这样当i+1=c时不把它赋给b[i]从而实现删除功能。 6、最后是完整的程序流程图。
C语言中去掉空格问题
/*去除字符串右边空格*/
void vs_strrtrim(char *pstr)
{
char *ptmp = pstr + strlen(pstr) - 1;
while (*ptmp == ' ')
{
*ptmp = '\0';
ptmp--;
}
}
/*去除字符串左边空格*/
void vs_strltrim(char *pstr)
{
char *ptmp = pstr;
while (*ptmp == ' ')
{
ptmp++;
}
while(*ptmp != '\0')
{
*pstr = *ptmp;
pstr++;
ptmp++;
}
*pstr = '\0';
}
c语言 字符串去掉空格
// 修改如下:
#include stdio.h
#include stdlib.h
#include string.h
void trimSpace(char *instr, char *outstr)
{
int i = 0;
int j = 0; // 因为去掉空格后的字符串的字符个数和去掉空格之前不一样,需要额外增加一个变量用来标记下标。
for (i = 0; i < (int)strlen(instr); i++)
{
if ((int)(*(instr + i)) == 32)
{
continue;
}
else
{
*(outstr + j) = *(instr + i);
j++;
}
printf("%c", *(outstr + i)); //这个位置可以打印出来去掉空格之后的字符串
}
*(outstr + j) = '\0';
printf("%s", *outstr); //这个位置再打印就是null了 求解为什么 感谢
}
void main()
{
char *p1 = " abcdefgdddd ";
char p2[100] = {0};
trimSpace(p1, p2);
//printf("%s", p2);
getchar();
}
C语言 删除字符串的所有前导空格
假设字符串是这样的
(_
表示空格,为了能看清,在相邻两个字符间放空格)
"_ _ a b c"
第一个循环:
while(*s == ' ')
s++;
使s指向第一个非空格的字符a 前面有:
t = s;
所以第二个循环:
while(*t++ = *s++);
就是用a覆盖第一个空格,b覆盖第二个空格,c覆盖a 对于:
*t++ = *s++;
即:
*(t++) = *(s++);
虽然++
的优先级高于*
,但是++
在后,所以先使用t,s,然后才++
即相当于:
*t = *s;
t++;
s++;
另外:
*t++ = *s++
作为while的入口检测表达式,所以当s指向\0
时,先*s
了,所以会把\0
复制到*t