1. 程式人生 > >【c語言】字串替換空格:請實現一個函式,把字串中的每個空格替換成“%20”

【c語言】字串替換空格:請實現一個函式,把字串中的每個空格替換成“%20”

//  字串替換空格:請實現一個函式,把字串中的每個空格替換成“%20”。
//  例如輸入“we are happy.”,則輸出“we%20are%20happy.”

#include <stdio.h>
#include <assert.h>

char*  replace(char* p)
{
	char* ret = p;
	int num = 0;
	int oldlen = 0;
	int newlen = 0;
	char* q = p;
	char* r;
	assert(p != NULL);
	while (*p != '\0')
	{
		if (*p == ' ')
		{
			num++;
		}
		oldlen++;
		p++;
	}
	p = q;
	newlen = oldlen + 2 * num;
	q = p + oldlen - 1;
	r = p + newlen - 1;
	while (q != r)
	{
		if (*q == ' ')
		{
			*r-- = '0';
			*r-- = '2';
			*r-- = '%';
		}
		else
		{
			*r = *q;
			r--;
		}
		q--;
	}
	return ret;
}

int main()
{
	char p[20] = "we are happy.";
	printf("原字串是:%s\n", p);
	printf("替換後的字串是:%s\n", replace(p));
	return 0;
}


<img src="https://img-blog.csdn.net/20150704100218180?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />




相關推薦

c語言字串替換空格實現一個函式字串每個空格替換20

// 字串替換空格:請實現一個函式,把字串中的每個空格替換成“%20”。 // 例如輸入“we are happy.”,則輸出“we%20are%20happy.” #include <stdio.h> #include <assert.h>

字串替換空格實現一個函式字元陣列每個空格替換20

例如輸入“we are happy”,則輸出“we%20are%20happy” 想要實現這個目的,先觀察下面的函式實現原理圖。 先通過遍歷字元陣列,找出其中的空格數,計算出應該移動到的位置,接著就

我的演算法日記實現一個函式字串每個空格替換“%20”。例如輸入“We are happy.”則輸出“We%20are%20happy.”。

請實現一個函式,把字串中的每個空格替換成“%20”。例如輸入“We are happy.”,則輸出“We%20are%20happy.”。在劍指offer中有這樣一道題目,我已經既不清楚了,我記得該題好像不準使用輔助空間,需要在遠字串上進行操作,如果在java中,直接用re

實現一個函式字串每個空格替換“%20例如輸入 “We are Happly。” 則輸出“we%20are%20happy。”

請實現一個函式,把字串中的每個空格替換成“%20”,例如輸入 “We are Happly。”  則輸出“we%20are%20happy。” void ReplaceBlank(char String[],int length) {  //originalLength

java 劍指offer 第二題實現一個函式一個字串空格替換“%20”。例如字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。

** public class Solution { public String replaceSpace(StringBuffer str) { 首先程式給出的引數是StringBuffer類,那麼我首先考慮的是就呼叫StringBuffer類的相關方法完成操作。

劍指offer實現一個函式一個字串每個空格替換

劍指offer 題目如下 請實現一個函式,將一個字串中的每個空格替換成"%20"。 例如,當字串為We Are Happy, 則經過替換後的字串為 We%20Are%20Happy。 具體的程式碼實現如下 1.遍歷實現 public class Solution {

c語言巨集(#define、#和##)與函式比較

#define -定義識別符號 ef:#define在預處理階段替代所有的Max #define Max 100 int main() { printf("%d\n", Max); system("pause"); return 0

C語言佇列演示(佇列的幾個函式

/* * 佇列演示(佇列的幾個函式) * */ typedef struct { int arr[SIZE]; int head; //記錄最前面數字所在的下標 int tail; //記錄最後一個有效數字的下一個座標

c語言將一個數的二進位制序列逆序然後輸出逆序之後的二進位制序所對應的數

<pre name="code" class="cpp">// 將一個數的二進位制序列逆序,然後輸出逆序之後的二進位制序,所對應的數 #include <stdio.h> // 從原數拿出最低位,放到mid中,mid左移,原數右移 int r

C語言給定兩個整型變數的值將兩個值的內容進行交換(不同方法)

     給定兩個整型變數的值,將兩個值的內容進行交換,現在我介紹幾種不同的實現方法:法1:在主函式裡實現,這樣操作這兩個值時並未重新開闢空間,直接交換可以達到目的。#include<stdio.h> #include<stdlib.h> int m

實現一個函式一個字串每個空格替換指定符號。

題目描述 請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 /* 思路:從前向後記錄‘ ’數目,從後向前替換‘ ’。 重點:從後向前替換的時候的技巧 例如:“we are lucky”

實現一個函式一個字串的字元從小寫轉為大寫。

#include <stdio.h> #include <stdlib.h> #include <conio.h> void upper(char* s, char* us) { while(*s != '\0')

實現一個函式一個字串轉換整數

作者:翁鬆秀 劍指offer之“把一個字串轉換成整數” 很多人看到這麼簡單的面試題目,都是大筆一揮,立馬寫下洋洋灑灑函式: int StringToInt(char* string){ int num = 0; while(*str

C語言統計一個字串字母、數字、空格及其它字元的數量

統計一個字串中字母、數字、空格及其它字元的數量 解法1: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> void Count(con

c語言模擬實現strchr函式功能一個字串查詢一個字元第一次出現的位置如果沒有出現返回NULL

// 模擬實現strchr函式,功能:在一個字串中查詢一個字元第一次出現的位置,如果沒有出現返回NULL #include <stdio.h> #include <assert.h> char const* my_strchr(char cons

c語言第一個只出現一次的字元題目字串找出第一個只出現一次的字元

// 第一個只出現一次的字元題目:在字串中找出第一個只出現一次的字元。 // 如輸入“abaccdeff”,則輸出’b’。 #include <stdio.h> #include <string.h> char find_one(ch

C語言字串處理自定義函式

1、字串求長度 #include <stdio.h> int Mystrlen1(const char *str) { int i=0; while(*(str++)!='\0') { i++; } return i; } int Mystrlen2(cons

C語言字串函式strtok 按照指定字串分割

C語言字串函式 strtok() 函式原型 char *strtok(char *str,const char *delimiters); 引數 str,待分割的字串 delimiters,分隔符字串 該函式用來將字串str分割成一個個片段。 引數str指