欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

两头堵模型

程序员文章站 2022-07-14 18:34:01
...

求非空字符串的长度并输出字符串

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int fun(char* p, int* n)
{
	if (p == NULL || n == NULL)
	{
		return -1;
	}

	int begin = 0;
	int end = strlen(p) - 1;

	//从左边开始
	//若果当前字符为空,且没有结束
	while (isspace(p[begin]) && p[begin] != 0)
	{
		begin++;//位置向右移动一位
	}

	//如果当前字符为空,且没有结束
	while (p[end] == ' ' && p[end] != 0)
	{
		end--;//往左移动
	}

	*n = end - begin + 1;

	return 0;
}

int fun2(char* p, int* buf)
{
	if (p == NULL || buf == NULL)
	{
		return -1;
	}

	int n = 0;
	int begin = 0;
	int end = strlen(p) - 1;

	//从左边开始
	//若果当前字符为空,且没有结束
	while (p[begin] == ' ' && p[begin] != 0)
	{
		begin++;//位置向右移动一位
	}

	//如果当前字符为空,且没有结束
	while (p[end] == ' ' && p[end] != 0)
	{
		end--;//往左移动
	}

	n = end - begin + 1;

	strncpy(buf, p + begin, n);

	return 0;
}

int main()
{
	char* p = "   sdjhfjdsh       ";
	int n = 0;
	int ret = 0;
	char buf[100] = { 0 };

	ret = fun(p, &n);
	if (ret != 0)
	{
		return ret;
	}
	printf("n = %d\n", n);

	ret = fun2(p, buf);
	if (ret != 0)
	{
		return ret;
	}
	printf("buf = %s\n", buf);

	printf("\n");
	system("pause");
	return 0;
}