c语言编写一个分割字符串的函数,分割后统计字符串以空格为分解,前后字符的数量

要求编写的格式如下: int makearg(char s[], char **args[]) { (要求完成这个函数的编写) } main() { char **args, str[] = "ls -l file"; int argc; argc = makearg(str, &args); (最后输出: ls -I file 2 }

分割字符串,意思是字符串中有很多空格,每个空格对应一个子串吗?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <string>
using namespace std;
int makearg(char s[], char** args[])
{
	string pStr = s;
	int nStartPos=0;
	int nEndPos=0;

	*args = new char*[10];

	int times = 0;

	while((nEndPos = pStr.find(' ',nStartPos))> 0)
	{
		string tmp = pStr.substr(nStartPos,nEndPos - nStartPos);
		char* p = new char[tmp.length()+1];
		memset(p,0,tmp.length() + 1);
		memcpy(p,tmp.c_str(),tmp.length());
		nStartPos = nEndPos+1;
		(*args)[times] = p;
		times++;
	}
	nEndPos=pStr.find('\0',0);
	string tmp = pStr.substr(nStartPos,nEndPos-nStartPos);
	char* p = new char[tmp.length()+1];
	memset(p,0,tmp.length() + 1);
	memcpy(p,tmp.c_str(),tmp.length());
	nStartPos = nEndPos+1;
	(*args)[times] = p;
	return times;
}

int main()
{
	char **args;
	char str[] = "ls -l file"; 
	int argc; 
	argc = makearg(str, &args); 
	
	for (int i =0; i <= argc;i++)
	{
		printf("%s\n",args[i]);
	}
	printf("%d\n",argc);
	
	//释放空间
	for (int i = 0; i <=argc; i++)
	{
		delete[] args[i];
		args[i] = 0;
	}
	delete[] args;
	args = 0;

	getchar();
	getchar();
	return 0;
}