我正在尝试从字符串中删除所有空格,并将每个单词添加到字符串数组中。
例如,提供了字符串:
char command[120] = "apple banana orange dogfood"
一个数组,定义为:
char *items[20+1]; //Maximum 20 items in string + 0
将包含元素:
{"apple", "banana", "orange" "dogfood"}
也就是说,所有空格都已删除。
我的目标是能够拨打电话:
echo 1 3 2
并打印
1 3 2
而不是
1 3 2
CODE
到目前为止,我有以下内容:
char temp_array[120];
//Populate array with words
int i, j = 0, ant = 0;
for(i = 0; i < strlen(command); i++) {
if(isspace(command[i]) || command[i] == '\0') {
if(ant <= 20) {
temp_array[j] = '\0';
memo = (char *) malloc(sizeof(temp_array)); //allocate memory
strcpy(memo, temp_array);
items[ant] = memo;
memset(temp_array, 0, j);
ant++;
j= 0;
}
}
else if(!isspace(command[i])) {
temp_array[j] = command[i];
j++;
}
}//Done populating array
items[ant] = NULL;
非常感谢任何帮助!
答案 0 :(得分:4)
使用LinkedList
可以自然解决此问题。
strtok
输出:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "apple banana orange dogfood";
char *items[20] = { NULL };
char *pch;
pch = strtok( str," \t\n" );
int i = 0;
while( NULL != pch )
{
items[i++] = pch;
pch = strtok( NULL, " \t\n" );
}
for( i = 0; i < 20; i++ )
{
if( NULL != items[i] )
{
printf( "items[%d] = %s\n", i, items[i] );
}
else
{
break;
}
}
return 0;
}
答案 1 :(得分:0)
遍历每个角色。如果它是一个空格,继续。如果不是,则将该字符的地址添加到数组中,循环直到第一个出现的空格并将其替换为空终止符。重复。
请注意,这会破坏您的初始字符串(在您的情况下为command
)。还记得它必须是可修改的(不能是只读字符串)。
答案 2 :(得分:0)
这是一个识别字符串中的单词并将它们存储在数组中的函数。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int GetWords(char *String,char **buffer);
int main(void)
{
char command[120] = " apple banana orange dogfood";
char *items[20+1];
int num_of_words = GetWords(command,items);
for( int n = 0 ; n < num_of_words ; n++ )
{
printf("%s ",items[n]);
free(items[n]);
}
puts("");
return 0;
}
int GetWords(char *String,char **buffer)
{
int x = -1 , y = 0 , z = 0 ;
size_t len = strlen(String) , n ;
for( n = 0 ; n < len ; n++ )
{
y++;
if( String[n] == ' ' )
{
y = 0;
z = 0;
}
if( y == 1 )
{
x++;
buffer[x] = (char*)malloc(len+1);
}
if( y > 0 )
{
buffer[x][z] = String[n];
z++;
buffer[x][z] = '\0';
}
}
//return number of words
return (x+1);
}
答案 3 :(得分:0)
String Current = "hello java example";
String trimstr=Current.trim().replace(" ", "");
int count=trimstr.length();
String tryarray[]=new String[count];
for(int i =0;i<count;i++){
tryarray[i]=trimstr.substring(i, i+1);
System.out.println(trimstr.substring(i, i+1));
}
System.out.println("arrays is "+Arrays.toString(tryarray));