1. 程式人生 > >深入系統學習C/C++

深入系統學習C/C++

畢業後兩年內的時間一直都是從事的C++方面的軟體開發,可以說有一定的經驗,但是每當去面試的時候,面對面試官提出的一些基本的C++題目還是有些吃力,所以決定靜下心來從新開始學習C++,廢話不多說。

有一個字串開頭或結尾含有n個空格(”   abcdefgdddd     ”),欲去掉前後空格,返回一個新字串。

有兩種寫法,第一種

int trimSpace(const char *inBuf, char *outBuf)
{
	int len = 0;
	char* srcchead = NULL;
	char* srctail = NULL;


	if (inBuf == NULL || outBuf == NULL)
	{
		return -1;
	}
	srcchead = inBuf;
	srctail = inBuf + strlen(inBuf) - 1;
	while(*srcchead == ' ')
	{
		srcchead++;
	}


	while(*srctail == ' ')
	{
		srctail--;
	}
	len = srctail - srcchead + 1;
	memcpy(outBuf, srcchead, len);
	return 1;
}
//第二種
int trimSpace(const char *inBuf, char *outBuf)
{
	int i = 0,j =0;
	int nCount;
	if (inBuf == NULL || outBuf == NULL)
	{
		return -1;
	}
	j = strlen(inBuf) - 1;
	while (isspace(inBuf[i]) && inBuf[i] != '\0')
	{
		i++;
	}

	while (isspace(inBuf[j]) && j > 0)
	{
		j--;
	}
	nCount = j - i + 1;
	strncpy(outBuf, inBuf + i, nCount);
	return 0;
}

int main()
{
	char *inBuf = "    abcdefgdddd     ";
	char outBuf[100] = {0};
	printf(" 去除空格前:%s",  inBuf );
	trimSpace(inBuf, outBuf);
	printf(" 去除空格後:%s",  outBuf);

	return 0;
}


相關推薦

深入系統學習C/C++

畢業後兩年內的時間一直都是從事的C++方面的軟體開發,可以說有一定的經驗,但是每當去面試的時候,面對面試官提出的一些基本的C++題目還是有些吃力,所以決定靜下心來從新開始學習C++,廢話不多說。 有一個字串開頭或結尾含有n個空格(”   abcdefgdddd     ”)

[深入學習C#]C#實現多線程的方式:Task——任務

ren avr 利用 run 如何 創建 其中 continue rep 簡介   .NET 4包含新名稱空間System.Threading.Tasks,它 包含的類抽象出了線程功能。 在後臺使用ThreadPool。 任務表示應完成的某個單元的工作。 這個單元的工作可以

C++系統學習之九:順序容器

  元素在順序容器中的順序與其加入容器時的位置相對應。關聯容器中元素的位置由元素相關聯的關鍵字值決定。所有容器類都共享公共的介面,不同容器按不同方式對其進行擴充套件。   一個容器就是一些特定型別物件的集合。順序容器為程式設計師提供了控制元素儲存和訪問順序的能力。 1. 順序容器概述 容器的兩種效能: 向容

系統學習-C++記憶體分配

目錄 程式結構理解 程式執行過程 Stack區 反彙編分析 原始碼 反彙編 總結 C++記憶體分配是一個很基礎的問題,明白這個分配機制,有很多C++的問題都可以很

如何正確的入門Windows系統C/C++學習領域

答: C語言和C++語言是2種不同程式設計思維的語言,前者是面向過程的程式設計思維, 後者是面向物件的程式設計思維, 差別還是很大的. 雖然C++語言是C語言的超集, 也就是說C++語言會相容與C語言. 但不表示在學習程式語言的起步過程中可以忽略C語言的學習而直接學習C++語言, 這是因為目前市面上還沒有一

C/C++程式設計學習筆記二:C語言的函式中,如何使用指標交換兩個數的值,深入理解指標

 使用外部函式交換兩個變數的值,一個再簡單不過的事情,但是在C/C++中,正確實現該功能反應了你對指標和引用等重要知識的掌握程度。本文列舉了幾種常見的寫法,其中前三種是錯誤的,後兩種是正確的。第四種使

系統學習ARM之五 --C語言和彙編混合編寫

一、GNU彙編書寫格式: 程式碼行中的註釋符號: ‘@’ 整行註釋符號: ‘#’ 語句分離符號: ‘;’ 直接運算元字首: ‘#’ 或 ‘$’全域性標號:標號只能由a~z,A~Z,0~9,“.”,_等(由點、字母、數字、下劃線等組成,除區域性標號外,不能以數字開頭)字

實驗樓學習C++實現課程管理系統

需求分析        課程總共分成三種:基礎課,專案課以及評估課,每門課都有唯一ID以及課程名,其中專案課增加了標籤資料,評估課增加了時間資料。整個系統的功能有:列印課程表(僅僅列印課程名和ID),根據ID或者課程名列印課程詳細資訊,根據ID或者課程名刪除課程,新增課程。整

一步一步學習C/C++;一步一步深入瞭解linux

在CheckBox的使用中 在程式碼內要得到CheckBox的指標要強轉為CButton型別 CButton*  m_checkbox=(CButton*)GetDlgItem(IDC_CHECKBOX1); 呼叫GetCheck()函式 如果其返回值為1則說明是選中狀態

系統學習 c++簡介

C++是______________語言,於1979年在____________________實驗室設計開發出來,進一步擴充了和完善了C語言,是_____________的程式設計語言。#include<iostream> using namespace std

小白如何自學C/C++——一個系統學習路線及學習思路

勿噴 也有 不錯 又是 簡潔 面向對象 初學者 浪費 發現 如今,在這個信息高度發達的時代,越來越多的人去學習軟件編程,也有越來越多的人學習編程語言,但是學習編程語言的第一步就是先接觸計算機語言——C語言,而如何去學習C語言也成了很多初學者小白的一個坎,今天我們就來說一下,

[C/C++] C++ Primer學習筆記

轉義 寫到 十六進制 程序 結果 否則 筆記 end 情況 下面記錄我每天看書學到的以前不太清楚的概念和用法: Day 1 endl:具有輸出換行的效果,並刷新與設備相關聯的緩沖區。 註:在調試程序過程中插入的輸出語句都應刷新輸出流,否則可能會造成程序崩潰,將會導致程序出錯

C/C++多線程編程之五】pthread線程深入理解

每一個 data- mar weight 可能 water 差異 trac alt 多線程編程之pthread線程深入理解 Pthread是 POSIX threads 的簡稱,是POSIX的線程標準。 前幾篇博客已經能給你初

C語言學習筆記 (003) - C/C++中的實參和形參(轉)

變化 避免 影響 學習筆記 ++ nbsp 過去 情況 真的 今天突然看到一道關於形參和實參的題,我居然不求甚解。藐視過去在我的腦海裏只有一個參數的概念,對於形參和實參的區別還真的不知道,作為學習了幾年C++的人來說,真的深深感覺對不起自己對不起C++老師 T。T 我

在Windows系統上以C++打印出當前活動用戶的環境變量

include copyto cal ntb views read += tac windows.h 在Windows系統上以C++打印出當前活動用戶的環境變量,代碼如下(QT環境): [cpp] view plain copy void

傳智播客c/c++公開課學習筆記--郵箱賬戶的破解與郵箱安全防控

用戶登陸 const mod ase content Coding 一行 學習筆記 ++ 一、SMTP協議 SMTP(SimpleMail Transfer Protocol)即簡單郵件傳輸協議。SMTP協議屬於TCP/IP協議簇,通過SMTP協議

設計模式學習筆記 C#代碼(一)

內容 編程 繼承 color 模式 c# 派生類 ive spa 《深入淺出設計模式》學習筆記第一章 原始需求和設計 事情是這樣開始的,公司需要做一套程序,鴨子,設計如下: 一個鴨子父類,多個派生類,三個可override的方法。 第一次需求變更 我們要會飛的鴨子!!!!

深入.NET平臺和C#編程筆記 第九章 文件操作

let 目錄 edi 保存 過程 相對 writer .net 文本 第九章 文件操作 01.持久化: 是將程序數據在持久狀態和瞬時狀態間轉換的機制。通俗的講,就是瞬時數據(比如內存中的數據,是不能永久保存的)持久化為持久數據(比如持久化至數據庫中,能夠長久保存)。

深入.NET平臺和C#編程筆記第三章

哈希 是你 存儲 key pac 問題 所有 try 編譯 第三章 使用集合組織相關數據 1.集合概念引入 集合:某些指定的對象(SE)集中在一起就是集合 如下是一個Hello Kitty的集合 數組:可以存儲相同數據類型的一堆數據的容器 2.集合Arr

深入.NET平臺和C#編程筆記第二章

數據的操作 數據類型 面向 封裝 nbsp 分割 一個數 信息隱藏 [0 第二章 深入C#數據類型 1.封裝 .封裝又稱信息隱藏,是指利用抽象數據類型(自定義類)將數據和數據的操作結合在一起,使其構成一個不可分割的獨立實體,盡可能的隱藏內部的細節,只保留一些對外接口,使之於