赞
踩
创建一个函数,删除主函数定义的一个字符串数组中的空格
注意事项,在数组声明时不能使用* S的方式,否则将无法有效传递到函数中。另外传递数组长度,需要在主函数中进行计算,在函数中计算时错误的。
#include <stdio.h> #include <string.h> void delspace(char *s,int n); int main(int argc, char *argv[]) { char s[]=" he ll o wor l d! "; int n = strlen(s); fputs(s,stdout); putchar('\n');//fputs不会自动添加换行符,使用putchar增加换行符 delspace(s,n); fputs(s,stdout); putchar('\n'); return 0; } void delspace(char *s,int n) { int j = 0; for(int i = 0;i < n;i++) if(*(s+i) != ' ')//判定是否是空格 { *(s+j) = *(s+i); j++; } *(s+j) = '\0';//增加字符串结束符号 }
whs@whs-hp:~/Documents/c_leaning$ gcc deletespace.c
whs@whs-hp:~/Documents/c_leaning$ ./a.out
he ll o wor l d!
helloworld!
使用双层循环时,需要主要,在外层将K赋值为0,否则第二次循环时指针无法移动到正确的位置。二维数组,声明为 (*s)[23]。
void delspace(char (*s)[23],int n); void prints(char (*s)[23],int n); int main(int argc, char *argv[]) { char s[][23]={" h a p p y !"," ama zin g "," he ll o wor l d! "," well co m "}; int n = 0; n = sizeof(s)/sizeof(s[0]); prints(s,n); delspace(s,n); prints(s,n); return 0; } void delspace(char (*s)[23],int n) { int k = 0; int i,j=0; for(i = 0;i < n;i ++) { k = 0;//K在重新进入循环要初始化为0 for(j = 0;*(*(s+i)+j) !='\0';j ++) { if(*(*(s+i)+j) != ' ')//判定是否是空格 { *(*(s+i)+k) = *(*(s+i)+j); k++; } } *(*(s+i)+k) ='\0'; } } void prints(char (*s)[23],int n) { for(int i = 0;i < n;i ++) { fputs(s[i],stdout); putchar('\n');//fputs不会自动添加换行符,使用putchar增加换行符 } }
whs@whs-hp:~/Documents/c_leaning$ gcc deletespace_s.c
whs@whs-hp:~/Documents/c_leaning$ ./a.out
h a p p y !
ama zin g
he ll o wor l d!
well co m
happy!
amazing
helloworld!
wellcom
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。