單片機c語言字符串操作

2020-12-13 電子工程世界網

函數原型int atoi(const char *nptr);

int val = atoi("12");

這樣va就l等於12

int轉字符串 itoa

函數原型:char*itoa(intvalue,char*string,intradix);

int number=123456;

char string[25];

itoa(number,string,10);

string就是123456 後面的10是說轉化成10進位 16就是轉化成16進位 8就是轉化成8進位 ,也可以轉化成2進位

字符串截取 strncpy

原型:char*strncpy(char*dest,char*src,size_tnum);

大家知道strcpy 是子環節複製字符串,可能不知道還有個strncpy,這是複製指定長度的字符串

chardes[]="Hello,iam!";

charsource[]="abcdefg";

strncpy(chardes,charsource,3);

這時chardes的值是abc 注意這裡可不是把abc添加在!後面的,是從chardes這個數組的首地址開始賦值的,最後會加上'\0'做結束符。

改變一下用法

strncpy(chardes+1,charsource+2,3);

這時候chardes的值是Hcde 為什麼是這個值,能看懂不?自己思考一下。偏移哈。

字符串構造 sprintf

原型 int sprintf( char *buffer, const char *format, [ argument] … );

這個應該很多人都知道。

char dest[20];

int val=12;

sprintf(dest,"val=%d",val);

dest的值就是"val=12" 那個12也是字符串了哈注意下。

這個函數也可以整形、浮點型轉字符串

sprintf(dest,"%f",3.1415926f);

dest 就是「3.1415926」

sprintf(dest,"現在的時間是%s,請注意","2014-04-09 11:27:21"); 後面這個字符串也可以換成變量

dest的值是 "現在的時間是2014-04-09 11:27:21,請注意"

直接對內存操作memset

原型 void *memset(void *s, int ch, size_t n);

char buffer[20];

strcpy(buffer,"1234567890");

memset(buffer,0,sizeof(char)*20);

這時buffer中的數據全都是0了

strcpy(buffer,"1234567890");

memset(buffer+2,6,sizeof(char)*2);

這時buffer值是1266567890

這個函數可以對任何數據類型的內存進行修改。所以有些從串口接收進來的數據需要做一下簡單的修改再轉發出去的話就可以用這個函數做修改。

先介紹這些吧,再想起來別的再補充

【2014-04-11 補】

memcpy函數使用起來也不錯的,直接把字節數組複製到指定位置了,這個就不說了。

字符串分割strtok

原型 char *strtok(char s[], const char *delim);

分解字符串為一組字符串。s為要分解的字符串,delim為分隔符字符串。

ARDUINO 代碼

 
輸出:
abc
d

記住了,只要第一次分割的時候需要指定字符串,之後再分割就用NULL就行了,當p==NULL的時候說明分割完了。這裡使用到了指針,此處指針不需要釋放。


查找字符串 strstr
原型 char *strstr(const char *str1, const char *str2);
strstr() 函數搜索一個字符串在另一個字符串中的第一次出現。
str1: 被查找目標 
str2: 要查找對象 

char str[]="1234 xyz";
char* str1=strstr(str,"34");
printf("%s",str1);
顯示: 34 xyz

字符串比較 strcmp
原型:extern int strcmp(const char *s1,const char * s2);
比較s1和s2 兩個相等就返回0 不想等就返回非0值。

字符串連接strcat
原型 extern char *strcat(char *dest,char *src);
把src 連接到dest值的後面,注意dest要有足夠的空間去接收src否則會出錯

相關焦點

  • C語言字符串操作總結
    1)字符串操作 strcpy(p, p1) 複製字符串 strncpy(p, p1, n) 複製指定長度字符串
  • 單片機的C語言中數組的用法
    數組在C51語言的地位舉足輕重,因此深入地了解數組是很有必要的。下面就對數組進行詳細的介紹。(1)一維數組本文引用地址:http://www.eepw.com.cn/article/201611/320327.htm一維數組是最簡單的數組,用來存放類型相同的數據。數據的存放是線性連續的。
  • 常見的C語言字符串操作
    #整型轉字符串實現邏輯,每個整數看其轉換進位,從個位到十位百位都可以通過%操作加上/操作獲得,再用一個字符數組保存0-F。用個位數對應值轉為字符,注意轉換出的字符串是反向的,還要考慮傳入的若是負數如何處理,再用翻轉字符串完成最後整個操作下面這段代碼需要好好研究一下,最好自己運行試試。
  • C語言字符串詳解
    ,C語言中的字符串都以字符串常量的形式出現或存儲在字符數組中。同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • C語言 -- 字符串詳解
    ,C語言中的字符串都以字符串常量的形式出現或存儲在字符數組中。同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • PIC單片機C語言程序設計(5)
    除了控制語句和輸入、輸出之外,幾乎所有的基本操作,都是按照運算符來進行處理的,可見其在C語言中的重要性。  1.C語言運算符的作用與分類  C語言的運算符可以靈活地與運算對象組合成運算表達式。按其在表達式中的作用,運算符可分成基本運算符和其他運算符。
  • c語言入門教程
    它的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。這本書被 C語言開發者們稱為"K&R",很多年來被當作 C語言的非正式的標準說明。人們稱這個版本的 C語言為"K&R C"。  c語言宣傳圖1970到80年代,C語言被廣泛應用,從大型主機到小型微機,也衍生了C語言的很多不同版本。
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    許多小夥伴在學完C語言後想入門單片機,但學著學著發現明明都是C語言,為什麼單片機C語言和我當初學的C語言有差異呢?今天小編就來梳理我們平時所學的C語言與單片機C語言的有什麼樣的不同。
  • 面試常見的C語言字符串操作
    #字符串倒序輸出 實現邏輯,通過strlen獲取字符串長度,然後通過 len/2 進行交叉賦值,這裡需要注意,不需要考慮len是奇數還是偶數的問題。 如果len是奇數,最後一個字符就不需要倒序,如果是偶數,最後兩個字符就倒序。
  • PIC單片機C語言程序設計(4)
    2.if語句  if 語句也稱為條件語句,是C 語言中轉移語句之一。在設計C 語言程序時,常常要根據某些條件以決定程序運行的流向,這時就需要if 語句來實現。
  • 如何寫出高效優美的單片機C語言代碼?
    a=a%8;可以改為:a=a&7;說明:位操作只需一個指令周期即可完成,而大部分的C編譯器的「%」運算均是調用子程序來完成,代碼長、執行速度慢。通常,只要求是求2n方的餘數,均可使用位操作的方法來代替。
  • 寫出高效優美的單片機C語言代碼
    a=a%8;可以改為:a=a7;說明:位操作只需一個指令周期即可完成,而大部分的C編譯器的「%」運算均是調用子程序來完成,代碼長、執行速度慢。通常,只要求是求2n方的餘數,均可使用位操作的方法來代替。(2)、平方運算a=pow(a,2.0);可以改為:a=a*a;說明:在有內置硬體乘法器的單片機中(如51系列),乘法運算比求平方運算快得多,因為浮點數的求平方是通過調用子程序來實現的,在自帶硬體乘法器的AVR單片機中,如ATMega163中,乘法運算只需2個時鐘周期就可以完成。
  • PIC單片機C語言程序實例
    編者按:為了幫助具有PIC單片機彙編語言知識的技術人員或工程師,快速掌握利用C語言編寫PIC單片機程序的方法,本刊特推出《PIC單片機C語言程序設計》系列連載文章。丈中給出的C語言程序實例,均是可執行的,讀者可以放心引用。      一、彙編語言與C語言      早期的單片機程序多採用彙編語言編寫。
  • 基於C語言51單片機電子密碼鎖的設計與仿真
    電子密碼鎖通常使用ARM和單片機控制,單片機相對ARM實現較為簡單,功能較為完善,因此使用單片機控制較多。用單片機控制的窖碼鎖常使用彙編語言編寫程序,顯示器多數用。而本文所介紹的電子密獁鎖使用移植性及可讀性強的高級語言C語言編寫,便於修改和增減功能蚤同時採用顯示清楚數碼管,功率消耗小而且壽命長的 液晶顯示器,顯示更加直觀,使用更加方便。
  • 單片機c語言教程:C51循環語句
    在 C 語言中構成循環控制的語句有 while,do-while,for 和 goto 語句。同樣都是起到循環作用,但具體的作用和使用方法又大不一 樣。我們具體來看看。goto 語句這個語句在很多高級語言中都會有,記得小時候用 BASIC 時就很喜歡用這個語句。
  • 基於C語言STC89C52單片機電子密碼鎖的設計與仿真
    它採用高可靠性的STC89C52單片機來實現開鎖和密碼的識別,採用具備I2C總線接口的E2PROM晶片來完成密碼的存儲,通過1602液晶顯示器提示程序運行狀態和使用步驟,利用蜂鳴器模擬報警,發光二極體模擬鎖的開關。該系統用C語言編寫程序,與彙編語言相比具備更好的移植性和可讀性,便於修改和增減功能。
  • 單片機教程:PIC單片機C語言程序設計(五)
    接前文:單片機教程:PIC單片機C語言程序設計(四)   九、C語言的運算符   C語言提供了30多個運算符,範圍很大,應用廣。除了控制語句和輸入、輸出之外,幾乎所有的基本操作,都是按照運算符來進行處理的,可見其在C語言中的重要性。  1.C語言運算符的作用與分類  C語言的運算符可以靈活地與運算對象組合成運算表達式。按其在表達式中的作用,運算符可分成基本運算符和其他運算符。
  • PIC單片機C語言程序設計(2)
    一個完整的PIC單片機C語言程序,通常由包含文件(即頭文件1,變量定義、變量說明、函數定義、函數體和注釋等六部分等組成。  1.C語言的標識符  所謂標識符,實際上是一些由程序編寫者自定義的名稱,類似於PIC單片機彙編語言中給寄存器(RAM)的命名。
  • 為什麼C語言是最適合單片機編程的高級語言!
    為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不是不能,而是不合適。
  • 正確操作C#字符串
    正確操作C#字符串本文是《編寫高質量代碼改善C#程序的157個建議》第一章基本語言要素之建議1正確操作字符串