色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言總結_字符串全方位練習

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-08-14 09:41 ? 次閱讀

C語言字符串全方位練習,涉及知識點:字符串解析、大小寫判斷、字符串插入、字符串刪除、字符串排序、字符串轉整數、字符串轉浮點數、時間轉換、GPS數據解析等等。

1. 計算空格、大小寫字母

從鍵盤上輸入一個字符串, 計算字符串里有多少個空格、小寫字母、大寫字母、數字。

#include   //標準輸入輸出
#include  //字符串處理頭文件
int main(int argc,char **argv)
{
	int len=0;
	int i;
	char str[100];
	int cnt[5]={0};  //初始化賦值
	//scanf("%s",str); //從鍵盤上錄入字符串,字符串結尾: '\0'
	//gets(str);       //從鍵盤上錄入字符串
	fgets(str,100,stdin); //從鍵盤上錄入字符串 (標準輸入)
	
	//空格、小寫字母、大寫字母、數字 其他數據
	
	/*1. 計算字符串的長度*/
	while(str[len]!='\0')len++;
	printf("len1=%d\n",len);
	printf("len2=%d\n",strlen(str)); //計算字符串長度
	
	/*2. 處理字符串*/
	for(i=0;i='a'&&str[i]<='z')cnt[1]++;
		else if(str[i]>='A'&&str[i]<='Z')cnt[2]++;
		else if(str[i]>='0'&&str[i]<='9')cnt[3]++;
		else cnt[4]++;
	}
	
	/*3. 打印結果*/
	printf("空格:%d\n",cnt[0]);
	printf("小寫:%d\n",cnt[1]);
	printf("大寫:%d\n",cnt[2]);
	printf("數字:%d\n",cnt[3]);
	printf("其他:%d\n",cnt[4]);
	return 0;
}

2. 字符串排序

示例:
#include   //標準輸入輸出
#include  //字符串處理頭文件

int main(int argc,char **argv)
{
	int len=0;
	int i,j;
	char tmp;
	char str[100];
	fgets(str,100,stdin); //從鍵盤上錄入字符串 (標準輸入)
		
	/*1. 計算字符串的長度*/
	len=strlen(str); //計算字符串長度
	
	/*2. 字符串排序*/
	for(i=0;i;i++)>

3. 字符串插入

字符串插入: “1234567890”
在第2個位置后面插入”ABC”
最終結果: “12ABC34567890”

#include   //標準輸入輸出
#include  //字符串處理頭文件
int main(int argc,char **argv)
{
	int i,j;
	int src_len;
	int new_len;
	/*
	123456789
	12    3456789
	*/
	char src_str[100]="123456789";  
	char new_str[]="abcd";
	int addr=2; //插入的位置
	
	/*1. 計算字符串的長度*/
	src_len=strlen(src_str); //"123"
	new_len=strlen(new_str);
	
	/*2. 字符串移動*/
	for(i=src_len-1;i>addr-1;i--)
	{
		src_str[i+new_len]=src_str[i]; //向后移動 new_len
	}
	
	/*3. 插入新的數據*/
	for(i=0;i;i++)src_str[addr+i]=new_str[i];>

5. 字符串刪除

字符串刪除: “1234567890”
刪除”456” 最終結果: “1237890”

示例:
#include   //標準輸入輸出
#include  //字符串處理頭文件

int main(int argc,char **argv)
{
	char src_str[100];
	char del_str[10];
	int src_len=0,del_len=0;
	int i,j;
	int cnt=0;
	
	/*1. 錄入字符串*/
	printf("輸入源字符串:"); //123dufvdfv123dfljvb
	fgets(src_str,100,stdin); //從鍵盤上錄入源字符串
	
	printf("輸入查找的字符串:"); //123
	fgets(del_str,10,stdin); //從鍵盤上錄入源字符串
	
	/*2. 計算長度*/
	src_len=strlen(src_str);
	src_str[src_len-1]='\0';
	src_len-=1; //src_len=src_len-1;
	
	del_len=strlen(del_str); //"123\n" =4
	del_str[del_len-1]='\0';
	del_len-=1;
	
	printf("源字符串:%s,%d\n",src_str,src_len);
	printf("刪除字符串:%s,%d\n",del_str,del_len);

	/*3. 查找*/
	for(i=0;i+1;i++)>

6. 字符串替換

字符串”1234567890”
將456替換為”888”
 最終: “1238887890”
需要考慮3種情況

7. 字符串轉整數。

從鍵盤上輸入一個字符串”12345”, 得到整數: 12345;

#include   //標準輸入輸出
#include  //字符串處理頭文件
int string_to_int(char str[]);
int main(int argc,char **argv)
{
	int data;
	char str[]="125abcd";
	data=string_to_int(str);
	printf("data=%d\n",data);
	return 0;
}

/*
函數功能: 字符串轉為整數
字符轉為整數: -48 或者 -'0'

1234
*/
int string_to_int(char str[])
{
	int value=0; //存放轉換之后的結果
	int i=0;
	while((str[i]!='\0')&&(str[i]>='0'&&str[i]<='9'))
	{
		value*=10;
		value+=str[i]-'0';
		i++;
	}	
	return value;
}

8. 整數轉字符串

整數轉字符串。輸入一個整數1234,得到字符串: “1234”

1234%10=4  1234/10=123 123%10=3 123/10=12
示例:
#include   //標準輸入輸出
#include  //字符串處理頭文件
void int_to_string(char str[],int data);

int main(int argc,char **argv)
{
	char str[100];
	int_to_string(str,12345);
	printf("str=%s\n",str);
	return 0;
}

/*
函數功能: 整數轉為字符串
函數參數:
	char str[]  //存放轉換之后的整數(字符串)
	int data    //待轉換的整數
*/
void int_to_string(char str[],int data)
{
	int i=0,j;
	char tmp;
	/*1. 將整數轉為字符串*/
	while(data)
	{
		str[i]=data%10+'0';
		data/=10;
		i++;
	}
	str[i]='\0';
	
	/*2. 交換順序*/
	for(j=0;j

9. 浮點數轉字符串

浮點數轉字符串。輸入一個浮點數123.456 得到字符串"123.456"

示例:
#include   //標準輸入輸出
#include  //字符串處理頭文件
void float_to_string(char str[],float data);

int main(int argc,char **argv)
{
	char str[100];
	float_to_string(str,12345.123);
	printf("str=%s\n",str);
	return 0;
}

/*
函數功能: 浮點數轉為字符串
函數參數:
	char str[]  //存放轉換之后的 浮點數(字符串)
	int data    //待轉換的 浮點數
*/
void float_to_string(char str[],float data)
{
	int i=0,j;
	char tmp;
	int addr;
	int int_data=data; //得到整數 12345
	int float_data=(data-int_data)*1000000;// 0.123456 *1000000 =123456

	/*1. 將整數部分轉為字符串*/
	while(int_data)
	{
		str[i]=int_data%10+'0';
		int_data/=10;
		i++;
	}
	str[i]='.'; //添加小數點
	
	/*2. 交換順序: 整數*/
	for(j=0;j

10.字符串轉浮點數

字符串轉浮點數。輸入一個字符串: “123.456” 得到浮點數類型: 123.456

#include   //標準輸入輸出
#include  //字符串處理頭文件
float string_to_float(char str[]);
int main(int argc,char **argv)
{
	float data;
	char str[]="123.456";
	data=string_to_float(str);
	printf("data=%f\n",data);
	return 0;
}

/*
函數功能: 字符串轉為浮點數
字符轉為整數: -48 或者 -'0'
*/
float string_to_float(char str[])
{
	int int_value=0; //存放轉換之后的結果
	int float_value=0; 
	int i=0;
	float data;
	int cnt=0; //記錄小數部分的數量
	int tmp=1;
	
	/*1. 整數部分*/
	while((str[i]!='\0')&&(str[i]>='0'&&str[i]<='9'))
	{
		int_value*=10;
		int_value+=str[i]-'0';
		i++;
	}
	
	/*2. 浮點數部分*/
	i++; //跨過小數點
	while((str[i]!='\0')&&(str[i]>='0'&&str[i]<='9'))
	{
		float_value*=10;
		float_value+=str[i]-'0';
		i++;
		cnt++;
	}
	
	for(i=0;i;i++)tmp*=10;>

11. 時間轉換

時間轉換(秒與標準時間的轉換)。
在代碼里加入: #include 頭文件。‘
調用time_t time(time_t *t);函數獲取本地時間。
示例: unsigned int sec=time(NULL); //sec是獲取到的秒單位時間
該時間是從1970年開始計算的。
什么是標準時間? 得到年-月-日 時:分:秒
本身: 數字電子鐘。
RTC: 實時時鐘

#include 
time_t time(time_t *t);

Linux下日期修改:  
[root@wbyq code]# date -s "2018-12-24 21:09:20"
示例:
#include   //標準輸入輸出
#include  //字符串處理頭文件
#include 

int get_year(int year);
void sec_to_time(int sec);
void Get_Week(int sec);

//定義時間結構
int tm_sec;         /* seconds */
int tm_min;         /* minutes */
int tm_hour;        /* hours */
int tm_mday;        /* day of the month */
int tm_mon;         /* month */
int tm_year;        /* year */
int tm_wday;        /* day of the week */
int tm_yday;        /* day in the year */

int mon_p[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int mon_r[12]={31,29,31,30,31,30,31,31,30,31,30,31};

int main(int argc,char **argv)
{
	int sec1;
	int sec2;
	while(1)
	{
		sec1=time(NULL);//獲取當前計算機系統的秒單位時間
		if(sec1!=sec2)
		{
			sec2=sec1;
			sec_to_time(sec2+8*60*60);
			printf("%d-%d-%d %d:%d:%d\n",
				  tm_year,
			      tm_mon,
				  tm_mday,
				  tm_hour,
				  tm_min,
				  tm_sec
				  );
		    printf("當前時間是當前年的第%d天\n",tm_yday);
		}
	}
	return 0;
}
/*
函數功能: 秒轉標準時間
*/
void sec_to_time(int sec)
{
	int i;
	Get_Week(sec);
	
	/*1. 得到年份*/
	tm_year=1970;//基礎年份
	while(sec>=365*24*60*60)
	{
		if(get_year(tm_year)) //閏年
		{
			if(sec>=366*24*60*60)
			{
				sec-=366*24*60*60; //減去一年
				tm_year++; //增加一年
			}
			else break;
		}
		else //平年
		{
			sec-=365*24*60*60; //減去一年
			tm_year++; //增加一年
		}
	}
	
	/*計算當前時間是一年中的第幾天*/
	tm_yday=sec/(24*60*60);
	
	/*2. 得到月份*/
	tm_mon=1;
	for(i=0;i<12;i++)
	{
		if(get_year(tm_year)) //閏年
		{
			if(sec>=mon_r[i]*24*60*60)
			{
				sec-=mon_r[i]*24*60*60;
				tm_mon++;
			}
			else break;
		}
		else //平年
		{
			if(sec>=mon_p[i]*24*60*60)
			{
				sec-=mon_p[i]*24*60*60;
				tm_mon++;
			}
			else break;
		}
	}
	/*3. 天數*/
	tm_mday=1;
	while(sec>=24*60*60)
	{
		tm_mday++;
		sec-=24*60*60;
	}
	
	/*4. 小時*/
	tm_hour=0;
	while(sec>=60*60)
	{
		tm_hour++;
		sec-=60*60;
	}
	/*5. 分鐘*/
	tm_min=0;
	while(sec>=60)
	{
		tm_min++;
		sec-=60;
	}
	/*6. 秒*/
	tm_sec=sec;
}

/*
函數功能: 獲取年份狀態: 平年和閏年
函數參數: year填年份
返回值: 0表示平年 1表示閏年
*/
int get_year(int year)
{
	if((year%400==0)||(year%4==0&&year%100!=0))
	{
		return 1;
	}
	return 0;
}

/*
函數功能: 獲取星期
*/
void Get_Week(int sec)
{
	int day=sec/(24*60*60);
	switch(day%7)
	{
	case 0:
		printf("星期4\n");    
		break;
	case 1:
		printf("星期5\n");    
		break;
	case 2:
		printf("星期6\n");    
		break;
	case 3:
		printf("星期日\n");    
		break;
	case 4:
		printf("星期1\n");    
		break;
	case 5:
		printf("星期2\n");    
		break;
	case 6:
		printf("星期3\n");    
		break;
	}
}

12. GPS數據解析

提取最基本的數據:
(1)	UTC時間
(2)	海拔高度
(3)	經緯度
//GPS返回的數據格式如下
	char gps_data[]=
	{
		"$GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0.0,M,,*4F \
		$GNGLL,2842.4158,N,11549.5439,E,114955.000,A,A*4D \
		$GPGSA,A,3,10,31,18,,,,,,,,,,5.7,3.8,4.2*37 \
		$BDGSA,A,3,07,10,,,,,,,,,,,5.7,3.8,4.2*2A \
		$GPGSV,3,1,10,10,49,184,42,12,16,039,,14,54,341,,18,22,165,23*7B \
		$GPGSV,3,2,10,22,11,318,,25,51,055,,26,24,205,,29,13,110,*7C \
		$GPGSV,3,3,10,31,50,287,36,32,66,018,*7F \
		$BDGSV,1,1,04,03,,,07,05,,,29,07,79,246,33,10,52,232,19*62 \
		$GNRMC,114955.000,A,2842.4158,N,11549.5439,E,0.00,44.25,061117,,,A*4D \
		$GNVTG,44.25,T,,M,0.00,N,0.00,K,A*14 \
		$GNZDA,114955.000,06,11,2017,00,00*47 \
		$GPTXT,01,01,01,ANTENNA OK*35"
	};
;i++)src_str[addr+i]=new_str[i];>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136684
  • 字符串
    +關注

    關注

    1

    文章

    578

    瀏覽量

    20506
收藏 人收藏

    評論

    相關推薦

    C++字符串string

    string是C++編程語言中的字符串。在C++中字符串處理可以使用c
    的頭像 發表于 07-10 00:26 ?1274次閱讀
    <b class='flag-5'>C</b>++<b class='flag-5'>字符串</b>string

    C語言教程之字符串替換

    C語言教程之字符串替換,很好的C語言資料,快來學習吧。
    發表于 04-25 15:49 ?0次下載

    C語言教程之回文字符串

    C語言教程之回文字符串,很好的C語言資料,快來學習吧。
    發表于 04-25 15:49 ?0次下載

    C語言字符串轉數字實現方法

    C/C++語言中沒有專門的字符串變量,通常用字符數組來存放字符串
    發表于 11-14 17:50 ?1.3w次閱讀

    C語言字符串操作總結大全(超詳細)

    本文對c語言字符串的操作進行了詳細的總結分析,需要的朋友可以參考。
    發表于 11-15 14:19 ?2077次閱讀

    C語言字符串匹配和數據提取源碼

    C語言字符串匹配與數據提取源碼
    的頭像 發表于 02-27 15:42 ?2390次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>字符串</b>匹配和數據提取源碼

    C++之字符串類學習的總結

    一般我們在c語言要實現對字符串操作的話,一般是采用字符數組或者一組函數來實現的,為啥這樣做呢,那是因為c
    的頭像 發表于 12-24 16:24 ?753次閱讀

    C語言編程字符串函數匯總資源下載

    C語言編程字符串函數匯總資源下載
    發表于 04-15 16:18 ?9次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>編程<b class='flag-5'>字符串</b>函數匯總資源下載

    字符串函數重寫練習

    字符串函數重寫練習字符串比較、字符串拼接、字符串查找、字符串拷貝、內存比較、內存拷貝、內存初始
    的頭像 發表于 05-05 15:02 ?1990次閱讀

    C語言總結_字符串函數封裝練習

    字符串函數重寫練習字符串比較、字符串拼接、字符串查找、字符串拷貝、內存比較、內存拷貝、內存初始
    的頭像 發表于 08-14 09:42 ?992次閱讀

    C語言_字符串與指針的練習

    這篇文章涉及到字符串與指針知識點的相關練習。浮點數與字符串互轉、字符串拷貝、字符串比較、指針交換變量、指針優先級、數據類型強制轉換、內存拷貝
    的頭像 發表于 08-14 09:51 ?1484次閱讀

    C語言-字符串處理

    字符串C語言里使用非常多,因為很多數據處理都是文本,也就是字符串,特別是設備交互、web網頁交互返回的幾乎都是文本數據。 這篇文章就介紹字符串
    的頭像 發表于 08-14 10:05 ?1748次閱讀

    C語言字符串的引用方式

    C語言程序中,字符串是存放在字符數組中的。 2. 用字符數組存放一個字符串,可以通過數組名和
    的頭像 發表于 03-10 14:57 ?1911次閱讀

    c語言字符串定義

    C語言是一種強大而廣泛使用的編程語言字符串是其中一個非常重要的概念。在C語言中,
    的頭像 發表于 11-24 10:02 ?1933次閱讀

    C語言字符串編譯函數介紹

    C語言中,字符串實際上是使用null字符O'終止的一維字符數組。因此,一個以null結尾的
    的頭像 發表于 03-07 16:18 ?501次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>字符串</b>編譯函數介紹
    主站蜘蛛池模板: 久久日本精品在线热| 狂躁美女BBBBBB视频| 亚洲AV 无码AV 中文字幕| 国产成人免费| 97国产揄拍国产精品人妻| 麻豆精品2021最新| WRITEAS塞红酒瓶| 少女亚洲free| 好爽别插了无码视频| 有码 亚洲 制服 国产 在线| 国产乱人精品视频AV麻豆| 亚洲午夜电影| 欧美国产影院| 国产精品久久久久久免费播放| 羞羞一区二区三区四区片| 久九九精品免费视频| 超碰caoporn| 亚洲免费精品视频| 欧美激情一区二区三区四区| 国产精品久久久久婷婷五月色婷婷| 亚洲国产在线视频中文字| 伦理在线影院伦理电影| 国产精品久久久久AV麻豆| 中文字幕亚洲第一页| 小SAO货水真多把你CAO烂| 久久综合中文字幕佐佐木希| 超碰97人人做人人爱少妇| 性色AV一区二区三区咪爱四虎| 偷上邻居熟睡少妇| 亚洲电影不卡| 精品丰满人妻无套内射| 成人在线免费视频| 97在线观看免费视频| 亚洲国产高清在线| 天天狠狠色综合图片区| 久久精品中文字幕有码日本| 把腿张开再深点好爽宝贝动态图 | bl(高h)文| 亚洲中文字幕永久在线全国| 亚洲a视频在线| 亚洲白色白色在线播放|