把一个长字符串用空格分割成几个小字符串,哪错了?
#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;
}