如何从C中的数组中删除空值?

时间:2015-10-09 03:07:30

标签: c cgi

我有一个数组,其中包含一些值:

char s[] = {" ","a","b","c"," "}; 

如何删除这些空值?

说明(从评论中收集):

我有一个从函数中获取的数组,当我用sprintf打印时,返回一个这样的字符串:" foo"两个空格或依赖,这是因为我用空白替换了一些字符 - 空格(' ')个字符,但是当我在另一个函数中使用变量时,这些空格给我带来错误,因为空值,那么我需要像java一样做“ split ”,怎么能我这样做了?

1 个答案:

答案 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;}