首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

把一个长字符串用空格分割成几个小字符串,哪错了?该如何处理

2013-11-19 
把一个长字符串用空格分割成几个小字符串,哪错了?#include stdio.h#include stdlib.hchar **func(char

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

热点排行