c语言 字符串去掉空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 字符串去掉空格相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void trimSpace(char *instr, char *outstr)
int i = 0;
for (i = 0; i < (int)strlen(instr); i++)


if ((int)(*(instr+i))==32)

continue;


else
*(outstr + i) = *(instr + i);


printf("%c", *(outstr+i)); //这个位置可以打印出来去掉空格之后的字符串



*(outstr + i) = '\0';
printf("%s", *outstr); //这个位置再打印就是null了 求解为什么 感谢



void main()
char *p1 = " abcdefgdddd ";
char p2[100] = 0;
trimSpace(p1,p2);
//printf("%s", p2);
getchar();

// 修改如下:
#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();

参考技术A 通过gets输入字符串后就开始遍历字符串,如果字符不是空格直接输出并向后遍历,如果是空格输出一个空格,并向后遍历直到不是空格为止,不作输出处理。
参考代码:
#include<stdio.h>
int main()

int i;
char a[100];
gets(a);
for(i=0;a[i]!='\0';)
if(a[i]==' ')//如果是空格输出一个空格,并向后遍历直到不是空格为止,中间不输出
printf(" ");
while(a[i]==' ') i++;

else//如果字符不是空格直接输出并向后遍历
printf("%c",a[i]);
i++;


printf("\n");
return 0;

/*
输出:
I am a teacher
I am a teacher
*/
参考技术B #include <stdio.h>#include <string.h>#include <ctype.h>void func(char *str) int i,j; char str2[81]; for(i=0,j=0;str[i]!='\0';i++) if(str[i]==' ') ; else str2[j++]=str[i]; str2[j] = '\0'; strcpy(str,str2); return;int main(void) char str[81]; printf("input a string:\n"); gets(str); puts(str); func(str); printf("***str: %s\n",str); return 0; 或者这样
#include <stdio.h>#include <string.h>#include <ctype.h>void func(char *str) int i,j; for(i=0,j=0;str[i]!='\0';i++) if(str[i]==' ') ; else str[j++]=str[i]; str[j] = '\0'; return;int main(void) char str[81]; printf("input a string:\n"); gets(str); puts(str); func(str); printf("***str: %s\n",str); return 0;追问

只能用两个指针作为传递进修修改

以上是关于c语言 字符串去掉空格的主要内容,如果未能解决你的问题,请参考以下文章

c语言 一个字符串以空格开头 怎么去掉开头的空格

trimws函数——去掉字符串头尾的空格

JAVA怎么【只】去掉字符串【前面的】空格?

C语言程序 去首尾空格怎么编

编程去掉字符串中的多余空格

JS去掉字符串的前后空格怎么处理?