读书人

把一个长字符串用空格分割成几个小字符

发布时间: 2013-11-19 22:55:29 作者: rapoo

把一个长字符串用空格分割成几个小字符串,哪错了?
#include <stdio.h>
#include <stdlib.h>

char **func(char *str, char *a[5]);

int main(void)
{
int i = 0;
char str[] = "today is a beautifly day";
char *a[5] = {};

func(str, a);

for(; i < 5; i++)
printf("%s\n", a[i]);

return 0;
}

char **func(char *str, char *a[5])
{
int row = 0;
int col = 0;
int i = 0;

for(; str[i]; i++)
{
if(str[i] != ' '){
a[row] = (char *)malloc(20);
a[row][col] = str[i];
col++;
}
else{
a[row][col] = '\0';
row++;
col = 0;
}
}
a[row][col] = '\0';

return a;
}

[解决办法]
多次new!


#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;

char **func(char *str, char *a[5]);

int main(void)
{
int i = 0;
char str[] = "today is a beautifly day";
char *a[6] = {0};

func(str, a);

for(; i < 5; i++)
printf("%s\n", a[i]);

return 0;
}

char **func(char *str, char *a[5])
{
int row = 0;
int col = 0;
int i = 0;
bool ifNew = true;

for(; str[i]; i++)
{

if(str[i] != ' ')
{
if(ifNew)
a[row] = (char *)malloc(20);
a[row][col] = str[i];
col++;
ifNew = false;

}
else
{
a[row][col] = '\0';
row++;
col = 0;
ifNew = true;
}
}
a[row][col] = '\0';

return a;
}

读书人网 >C语言

热点推荐