我有一个数组,其中包含一些值:
char s[] = {" ","a","b","c"," "};
如何删除这些空值?
说明(从评论中收集):
我有一个从函数中获取的数组,当我用sprintf
打印时,返回一个这样的字符串:" foo"
两个空格或依赖,这是因为我用空白替换了一些字符 - 空格(' ')
个字符,但是当我在另一个函数中使用变量时,这些空格给我带来错误,因为空值,那么我需要像java一样做“ split ”,怎么能我这样做了?
答案 0 :(得分:-1)
不确定"删除它们",但你可以计算除了"空格"之外的所有内容,并创建一个这样大小的数组并转移所有"非空格"。
这样的事可能吗?这可能不是最好的答案,这只是为了演示目的。
我不知道你的char数组中是否会有行尾字符...所以这是另一种方法。
#include <stdio.h>
int count (char s[5]){
int count = 0, i;
for(i=0; i<5;i++){
if(s[i]!=' ')count++;
}
return count;
}
void load(int size, char s[size], char s1[5]){
int i, j=0;
for(i=0; i<5; i++){
if( s1[i]!=' '){s[j]=s1[i];
j++;}
}
}
int main(){
char s[5] = {' ','a','b','c',' '};
int size = count(s);
char newS[size];
load(size, newS, s);
puts(newS);
return 1;}