1. 程式人生 >實用技巧 >其它 >94

94


技術標籤:C

94 date:2021.2.18

94

要點: 字串連線函式

詳細程式碼如下:

#include <stdio.h>
void  fun( char *a )
{
	/*
		analyse:
		
		遍歷前導*  -> 放入陣列  ->放入字串尾部
	*/

	int i = 0, n = 0;
	char *p;  
	p = a; 	//定義一個指標並指向字串的首地址
	while(*p == '*')  //利用迴圈找出字串的前導*號的個數
	{
		n++;
		p++;
	}
	while(*p)	//利用迴圈將剩餘的字元拷貝到另外一個字串中
	{
		a[i] = *p;
		i++;
		p++;
	}
	while(n != 0)  
	{
		a[i] = '*';  //在字串末尾接上n個*
		i++;
		n--;
	}
	a[i] = '\0';

	/*  error:
	int i,j =0,sum = 0;
	for(i = 0; a[i] == '*'; i++) //取出前導*
	{
		a[sum]= a[i];
		sum++;
	}

	for(i = sum+1; a[i] != '\0'; i++)  //取出從第一個字母開始到字串末尾
	{
		a[j] = a[i];
		j++;
	}

	a[j] += a[sum];
	*a = a[j];
	*/
	
	/* CHANGE RIGHT:
	int i,j =0,sum = 0;
	for(i = 0; a[i] == '*'; i++) //取出前導*
	{
		a[sum]= a[i];
		sum++;
	}

	for(i = sum; a[i] != '\0'; i++)  //取出從第一個字母開始到字串末尾
	{
		a[j] = a[i];
		j++;
	}
	
	while(sum != 0)
	{
		a[j] = '*';
		j++;
		sum--;
	}
	a[j] = '\0';
	*/
}

void main()
{  char  s[81];  int  n=0; void NONO ();
   printf("Enter a string:\n");gets(s);
   fun( s );
   printf("The string after moveing:\n");puts(s);
   NONO();
}