我有像一些值的数组:如何从C中的数组中删除空值?
char s[] = {" ","a","b","c"," "};
如何删除这些空值?
描述(从意见收集):
我有一个数组,我从一个函数得到,当我印有sprintf
返回我这样的字符串:" foo"
两个坯料或依赖,是因为我替换一些字符与空白空间(' ')
字符,但是当我在另一个函数中使用变量,这些空格给我的错误,因为空值,那么我需要做一个“拆分”像java一样,我该怎么做?
我有像一些值的数组:如何从C中的数组中删除空值?
char s[] = {" ","a","b","c"," "};
如何删除这些空值?
描述(从意见收集):
我有一个数组,我从一个函数得到,当我印有sprintf
返回我这样的字符串:" foo"
两个坯料或依赖,是因为我替换一些字符与空白空间(' ')
字符,但是当我在另一个函数中使用变量,这些空格给我的错误,因为空值,那么我需要做一个“拆分”像java一样,我该怎么做?
不确定“删除它们”,但可以计算除“空格”之外的所有内容,并创建一个具有该大小的数组并传输所有“非空格”。
也许这样的事情?这可能不是最好的答案,这仅仅是为了演示的目的。
我不知道你的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;}
好吧,这工作正常,但大小保持与其他数组相同,我需要将它传递给新的数组有效值的新大小,因此我说我可以'删除'这些值 – maudev
@ user3295036该函数计算字符串中的有效char值...然后返回该值以创建一个具有该大小的数组,因此,不会有新的数组具有不同的大小(在上面的情况中,它将是大小3而不是大小5)。 – LearningCODE
这个声明/定义是错误的,启用编译警告,你的编译器告诉你什么?也请澄清你的意思*删除*?这不是c程序员会想的方式!所以请解释你为什么要这样做来提供一个解决方案。请注意,“删除*”的值通常是不必要的工作。 –
我有一个数组,我得到了一个函数,当我用sprintf打印返回给我一个这样的字符串:“富”两个空白或依赖,这是因为我用blankspace('')字符替换某些字符,但是当我在另一个函数中使用变量,这些空间给我的错误,因为空值,那么我需要做一个像Java那样的“分裂”,我该怎么做? – maudev
您可以创建另一个字符串数组,并只保存有效的字符串。如果字符串为空,则不要复制到较新的阵列。 – Pawan