程序片段(01):加法.c 內容概要:字符串計算表達式
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void removeBlankSpaceByIndex(
char * pStr)
{
int i =
0 ;
int j =
0 ;
while (
'\0' != (*(pStr + i) = *(pStr + j++))){
if (
' ' != *(pStr + i)) {++i;}}
}
void removeBlankSpaceByPoint(
char * pStr)
{
char * p1 = pStr;
char * p2 = pStr;
while (
'\0' != (*p1 = *p2++)){
if (
' ' != *p1){++p1;}}
}
int isNum(
char chr)
{
if (
'0' <= chr && chr <=
'9' ){
return 1 ;}
return 0 ;
}
double getNum(
char * pStr,
int * pIndex)
{
double dbInt =
0.0 ;
int index = *pIndex;
while (isNum(*(pStr +
index ))){dbInt = dbInt *
10 + *(pStr +
index ) -
'0' ;++
index ;}
if (
'.' == *(pStr +
index )){
double dbDouble =
1.0 ;
while (isNum(*(pStr + (++
index )))){dbDouble /=
10 ;dbInt += dbInt + dbDouble * (*(pStr +
index ) -
'0' );}}*pIndex =
index ;
return dbInt;
}
double caculate(
char * pStr)
{
double value =
0.0 ;
int index =
0 ;value = getNum(pStr, &
index );
while (
1 ){
char op = *(pStr +
index );++
index ;
switch (op){
case '\0' :{
return value;
break ;}
case '+' :{value += getNum(pStr, &
index );
break ;}
case '-' :{value -= getNum(pStr, &
index );
break ;}
default :
break ;}}
return value;
}
int main01(
void )
{
char str [
1024 ] = {
0 };scanf(
"%[^\n]" ,
str );printf(
"待計算的常量表達式為:%s \n" ,
str );removeBlankSpaceByPoint(
str );printf(
"經過預處理后的常量表達式為:%s \n" ,
str );
int index =
0 ;
double value = getNum(
str , &
index );printf(
"第一個獲取的數據為:%lf \n" , value);printf(
"該常量表達式的計算結果為:%lf \n" , caculate(
str ));system(
"pause" );
}
程序片段(02):乘除法.c 內容概要:乘除法
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> void removeBlankSpace(
char * pStr)
{
char * p1 = pStr;
char * p2 = pStr;
while (
'\0' != (*p1 = *p2++)){
if (
' ' != *p1){++p1;}}
}
int isNum(
char chr)
{
if (
'0' <= chr && chr <=
'9' ){
return 1 ;}
return 0 ;
}
double getNum(
char * pStr,
int * pIndex)
{
double dbInt =
0 ;
int index = *pIndex;
while (isNum(*(pStr +
index ))){dbInt += dbInt *
10 + (*(pStr +
index ) -
'0' );++
index ;}
if (
'.' == *(pStr +
index )){
double dbDouble =
1.0 ;
while (isNum(*(pStr + (++
index )))){dbDouble /=
10 ;dbInt += dbDouble*(*(pStr +
index ) -
'0' );}}*pIndex =
index ;
return dbInt;
}
double caculateMulDiv(
char * pStr,
int * pIndex)
{
double value =
0.0 ;value = getNum(pStr, pIndex);
while (
1 ){
if (
'*' == *(pStr + *pIndex)){(*pIndex)++;value *= getNum(pStr, pIndex);}
else if (
'/' == *(pStr + *pIndex)){(*pIndex)++;value /= getNum(pStr, pIndex);}
else {
break ;}}
return value;
}
double caculateAddSub(
char * pStr)
{
double value =
0.0 ;
int index =
0 ;value = caculateMulDiv(pStr, &
index );
while (
1 ){
char op = *(pStr +
index );++
index ;
switch (op){
case '\0' :{
return value;}
case '+' :{value += caculateMulDiv(pStr, &
index );
break ;}
case '-' :{value -= caculateMulDiv(pStr, &
index );
break ;}
default :
break ;}}
return value;
}
int main01(
void )
{
char str [
1024 ] = {
0 };scanf(
"%[^\n]" ,
str );printf(
"待計算的常量表達式為:%s \n" ,
str );removeBlankSpace(
str );printf(
"經過預處理之后的常量表達式為:%s \n" ,
str );printf(
"常量表達式的計算結果為:%lf \n" , caculateAddSub(
str ));system(
"pause" );
}
程序片段(03):括號.c 內容概要:括號
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> void removeBlankSpace(
char * pStr)
{
char * p1 = pStr;
char * p2 = pStr;
while (
'\0' != (*p1 = *p2++)){
if (
' ' != *p1){p1;}}
}
int isNum(
char chr)
{
if (
'0' <= chr && chr <=
'9' ){
return 1 ;}
return 0 ;
}
double getNum(
char * pStr,
int * pIndex)
{
double dbInt =
0 ;
int index = *pIndex;
while (
'(' == *(pStr +
index )){
char * pSubStr = NULL;*pIndex += ++
index ;pSubStr = caculateParenthese(pStr, pIndex);
double caculateAddSub(
char * pstr);dbInt = caculateAddSub(pSubStr);free(pSubStr);pSubStr = NULL;
return dbInt;}
while (isNum(*pStr +
index )){dbInt = dbInt *
10 + (*(pStr +
index ) -
'0' );++
index ;}
if (
'.' == *(pStr +
index )){
double dbDouble =
1.0 ;
while (isNum(*(pStr + (++
index )))){dbDouble /=
10 ;dbInt = dbDouble * (*(pStr +
index ) -
'0' );}}*pIndex =
index ;
return dbInt;
}
char * caculateParenthese(
char * pStr,
int * pIndex)
{
char * tmpStr = NULL;
int num =
0 ;
int leftIndex = *pIndex;do{
switch (*(pStr + *pIndex)){
case '(' :{++num;
break ;}
case ')' :{
if (
0 == num){++(*pIndex);tmpStr = (
char *)malloc((*pIndex - leftIndex) * sizeof(
char ));strncpy_s(tmpStr, *pIndex - leftIndex, pStr + leftIndex, *pIndex - leftIndex -
1 );printf(
"%s \n" , tmpStr);
return tmpStr;}
else {--num;}
break ;}}}
while (
'\0' != *(pStr + (*pIndex)++));
}
double caculateMulDiv(
char * pStr,
int * pIndex)
{
double value =
0.0 ;value = getNum(pStr, pIndex);
while (
1 ){
if (
'*' == *(pStr + *pIndex)){++(*pIndex);value *= getNum(pStr, pIndex);}
else if (
'/' == *(pStr = *pIndex)){++(*pIndex);value /= getNum(pStr, pIndex);}
else {
break ;}}
return value;
}
double caculateAddSub(
char * pStr)
{
double value =
0.0 ;
int index =
0 ;value = caculateMulDiv(pStr, &
index );
while (
1 ){
char op = *(pStr +
index );++
index ;
switch (op){
case '\0' :
return value;
case '+' :{value += caculateMulDiv(pStr, &
index );
break ;}
case '-' :{value += caculateMulDiv(pStr, &
index );
break ;}
default :
break ;}}
}
int main(
void )
{
char str [
1024 ] = {
0 };scanf(
"%[^\n]" ,
str );removeBlankSpace(
str );printf(
"%lf \n" , caculateAddSub(
str ));system(
"pause" );
}
程序片段(04):DelStr.c 內容概要:刪除指定字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
void delFirstChrByIndex(
char * pStr,
char chr)
{
char * p =
strchr (pStr, chr);
if (NULL == p){
return ;}
for (
int i =
0 ; i <
strlen (p); ++i){*(p + i) = *(p + i +
1 );}
}
void delFirstChrByPoint(
char * pStr,
char chr)
{
char * p =
strchr (pStr, chr);
if (NULL == p){
return ;}
char * p1 = p;
char * p2 = p +
1 ;
}
void delAllChrByIndex(
char * pStr,
char chr)
{
int i =
0 ;
int j =
0 ;
while (
'\0' != *(pStr + i)){*(pStr + i) = *(pStr + j);
if (chr != *(pStr + i)){++i;}++j;}
}
void delAllChrByPoint(
char * pStr,
char chr)
{
char * p1 = pStr;
char * p2 = pStr;
while (
'\0' != (*p1 = *p2++)){*p1 = *p2;
if (chr != *p1){++p1;}}
}
void delFirstStrByIndex(
char * pStr,
char * pSubStr)
{
char * p =
strstr (pStr, pSubStr);
if (NULL == p){
return ;}
int pLen =
strlen (p);
int subStrLen =
strlen (pSubStr);
int validLen = pLen - subStrLen;
for (
int i =
0 ; i <= validLen; ++i){*(p + i) = *(p + i + subStrLen);}
}
void delFirstStrByPoint(
char * pStr,
char * pSubStr)
{
char * p =
strstr (pStr, pSubStr);
if (NULL == p){
return ;}
int subStrLen =
strlen (pSubStr);
char * p1 = p;
char * p2 = p + subStrLen;
while (
'\0' != (*p1 = *(p1++ + subStrLen)));
}
void delAllStrByIndex(
char * pStr,
char * pSubStr)
{
int i =
0 ;
int j =
0 ;
int subStrLen =
strlen (pSubStr);
while (
'\0' != (*(pStr + i) = *(pStr + j))){
int flag =
1 ;
for (
int k =
0 ; k < subStrLen; ++k){
if (
'\0' == *(pStr + j + k) || *(pStr + j + k) != *(pSubStr + k)){flag =
0 ;
break ;}}
if (!flag){++j;++i;}
else {j +=
strlen (pSubStr);}}
}
void delAllStrByPoint(
char * pStr,
char * pSubStr)
{
char * p1 = pStr;
char * p2 = pStr;
while (
'\0' != (*p1 = *p2)){
int flag =
1 ;
char * px = p2;
char * py = pSubStr;
while (
'\0' != *py){
if (
'\0' == *px || *px != *py){flag =
0 ;
break ;}++px;++py;}
if (!flag){++p1;++p2;}
else {p2 +=
strlen (pSubStr);}}
}
int main01(
void )
{
char str[
1024 ] =
"i love china i love you i love money i love girl" ;
printf (
"%s \n" , str);
printf (
"%s \n" , str);system(
"pause" );
}
void delAllWStrByPoint(
wchar_t * pWStr,
wchar_t * pSubWStr)
{
wchar_t * p1 = pWStr;
wchar_t * p2 = pWStr;
while (L
'\0' != (*p1 = *p2)){
int flag =
1 ;
wchar_t * px = p2;
wchar_t * py = pSubWStr;
while (L
'\0' != *pSubWStr){
if (L
'\0' == *px || *px != *py){flag =
0 ;
break ;}++px;++py;}
if (!flag){++p1;++p2;}
else {p2 += wcslen(pSubWStr);}}
}
int main02(
void )
{
--金三胖中國隊要是能進球,我就把靖國神社拆了!--小泉純一郎中國隊要是能進球。我就認拉燈當干爹!--布什 中國隊要是能進球,我就信佛。--上帝中國隊要是能進球,我就信上帝!
--釋迦牟尼中國隊要是能進球。我就回歸!--阿扁中國隊要是能進球。我立即復活--阿拉法特 中國隊要是能進球。我們就辭職。--中國足協最后說中國隊要是能進球, 我就倒著轉!--地球說 中國對要是能進球, 我就從西邊出來!--太陽說 中國對要是能進球, 我就去給貓當伴娘!--耗子說 中國對要是能進球, 我就再爆炸一次!-宇宙最后說 ";
setlocale(LC_ALL,
"zh-CN" );
wchar_t wstr[
1024 ] = L
"上聯:試問中國男足幾多愁. 下聯:恰似一群太監上青樓. 橫聯:無人能射\ 上聯:再問中國男足幾多愁.下聯:恰似一群妓女守青樓.橫聯:總是被射 \ 上聯:三問中國男足幾多愁.下聯:恰似陽痿患者逛青樓.橫聯 : 欲射不能\ 上聯:四問中國男足幾多愁.下聯:恰似一群小孩上青樓.橫聯 : 尚不能射\ 上聯:五問中國男足幾多愁.下聯:恰似一群傻瓜去青樓.橫聯 : 往哪里射\ 上聯:六問中國男足幾多愁.下聯:恰似跑堂雜役在青樓.橫批 : 看別人射\ love love love love love love love love\ 中國隊要是能進球,我就投案自首! --拉登\ 中國隊要是能進球,我就停止核武器!--內賈德\ 中國隊要是能進球,我就改革開放。--金三胖\ 中國隊要是能進球,我就把靖國神社拆了!
--小泉純一郎\ 中國隊要是能進球,我就認拉燈當干爹!
--布什\ 中國隊要是能進球,我就信佛。--上帝\ 中國隊要是能進球。我就信上帝!--釋迦牟尼\ 中國隊要是能進球,我就回歸。--阿扁\ 中國隊要是能進球,我立即復活--阿拉法特\ 中國隊要是能進球,我們就辭職。--中國足協最后說\ 中國隊要是能進球, 我就倒著轉!--地球說\ 中國對要是能進球, 我就從西邊出來!--太陽說\ 中國對要是能進球, 我就去給貓當伴娘!--耗子說\ 中國對要是能進球, 我就再爆炸一次!-宇宙最后說 "
;
wchar_t str[
10 ] = L
"中國" ; delAllWStrByPoint(wstr, str); wprintf(L
"%ls" , wstr); system(
"pause" ); }
程序片段(05):01.字符串分割以及動態分配.c+02.strtok.c 內容概要:字符串分割以及字典
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int getChrCount(
char * pStr,
char chr)
{
if (NULL == pStr){
return -
1 ;}
int i =
0 ;
for (
char * p =
strchr (pStr, chr); NULL != p; p =
strchr (p +
1 , chr)){++i;}
return i;
}
void removeBlankSpace(
char * pStr,
char chr)
{
char * p1 = pStr;
char * p2 = pStr;
while (*p1 = *p2){
if (chr != *p1){++p1;}++p2;}
}
int main01(
void )
{
char str[
2048 ] =
"我們還是當朋友好了 ( 事實上你還有能夠利用的價值)\我想我真的不適合你 ( 我根本就不喜歡你!)\事實上你人真的非常好 ( 但是我不想和你在一起)\你人真的非常好 ( 我是真的不想和你在一起)\你人真的真的非常好....真的 ( 豬頭, 離我遠一點!)\我暫時不想交男朋友 ( 閃邊啦!你還不到我心中帥哥標準的一半)\我不想傷害我們之間的友誼 ( 我們之間也僅僅會有友誼)\我心中牽掛著一個人 ( 那個人是我專門為你這種人虛構的)\我從來沒想過這個問題 ( 這是根本不可能的.還用想嗎 ? )\我不適合當個情人 ( 廢話, 沒人會適合當你的情人的)\你給我一段時間考慮 ( 不給我時間, 我怎么溜啊)\你的條件真的非常好 ( 但是還沒好到我想要的地步)\但是這種感覺好怪 ( 你這丑八怪, 怪到這樣還想吃天鵝肉 ? )\你的溫和我會銘記在心的 ( 拜托, 情圣!光溫和是無用的, 還要有錢!)\事實上我一直沒勇氣接受你( 看到你差點嚇死, 哪還有勇氣 ? )\你真的非常可愛 ( 你真的非常幼稚)\你真的是超級可愛啦 ( 豬頭, 不要象小孩那樣纏著我!)\遇到你, 總會讓我重溫童年的快樂 ( 就象阿姨遇到小弟弟那樣)\我們應該給彼此一點緩沖時間 ( 給你時間快滾, 再不走我要翻臉啦!)\別人都說你條件不錯啊 ( 可我從來沒這樣覺得!)\假設我們早點認識就好了 ( 能夠讓你早點覺悟!)\別急嘛, 我們能夠做朋友 ( 趁這個時候我要找到我的白馬王子啊~)\" ;
int num = getChrCount(str,
')' );
printf (
"該字符串一共存在%d行! \n" , num);
char ** strAll = (
char **)
malloc (num *
sizeof (
char *));
char ** strSay = (
char **)
malloc (num *
sizeof (
char *));
char ** strThink = (
char **)
malloc (num *
sizeof (
char *));
int i =
0 ;
for (
char * p = strtok(str,
")" ); NULL != p; p = strtok(p +
strlen (p) +
1 ,
")" )){
if (i < num){*(strAll + i) = (
char *)
malloc ((
strlen (p) +
1 ) *
sizeof (
char ));
strcpy (*(strAll + i), p);}++i;}
for (
int i =
0 ; i < num; ++i){
char * pStr = *(strAll + i);pStr = strtok(pStr,
"(" );*(strSay + i) = (
char *)
malloc ((
strlen (pStr) +
1 )*
sizeof (
char ));
strcpy (*(strSay + i), pStr);pStr = pStr +
strlen (pStr) +
1 ;*(strThink + i) = (
char *)
malloc ((
strlen (pStr) +
1 )*
sizeof (
char ));
strcpy (*(strThink + i), pStr);}
char myStr[
128 ] = {
0 };
scanf (
"%s" , myStr);
int flag =
0 ;
for (
int i =
0 ; i < num; ++i){
char * p =
strstr (strSay[i], myStr);
if (NULL != p){flag =
1 ;
printf (
"說的是:%s,想的卻是:%s \n" , strSay[i], strThink[i]);
break ;}}
if (!flag){
printf (
"能夠問芳姐! \n" );}system(
"pause" );
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * myStrTok(
char * pStr,
char * pSplit)
{
char * p =
strstr (pStr, pSplit);
if (NULL != p){*p =
'\0' ;
return pStr;}
return NULL;
}
int main(
void )
{
char str[
100 ] =
"123,qwer,thjk,qsdf" ;
for (
char * p = myStrTok(str,
"," ); NULL != p; p = myStrTok(p +
strlen (p) +
1 ,
"," )){
printf (
"%s \n" , p);}
char * p = strtok(str,
"," );
printf (
"%s \n" , p);
for (
int i =
0 ; i <
100 ; ++i){
printf (
"%d, %c \n" , *(str + i), *(str + i));}system(
"pause" );
}
程序片段(06):scanfsprintf.c 內容概要:字符串獲取打印sscanfsprintf
//
01 .對字符串掃描打印:
// 字符串掃描:sscanf(str, 格式字符串, 地址列表);
// 跨函數改動內存-->地址列表(改動原本)
// 字符串打印:
sprintf (str, 格式字符串, 內存列表);
// 跨函數讀取內存-->內存列表(讀取副本)
//注:分為直接解析(普通變量)和間接解析(指針變量)
//
02 .strtol();(數值/單位)函數
// char * unit;
// long price = strtol(str, &unit,
10 );
// 依照指定進制數;從待讀取字符串起始位置往后進行讀取,遇到非數字字符結束讀取狀態
// 并將非數字字符的位置給記錄下來
int main01(void)
{char str[
1024 ] =
"124784 # T小姐 # 女 # 22# 168 #在校學生 # 10000元/天 # 北京電影學院學生,形象氣質佳,可愛高雅有品位,出身良好,富有才情和浪漫,英語非常流利,喜歡旅游,常去歐洲度假,僅僅針對高端有實力客戶,不接收不論什么陌生來電,發短信就可以。北京1W每次,外地另議。 接受價格再與我聯系,無實力者勿擾。不要浪費彼此時間,切記!
# 18600959828 # 1002823878@qq .com # 2289557521"
;
for (
int i =
0 ; i < strlen(str); ++i) {
// 字符串預處理
if (
'#' ==
*( str + i)) {
*( str + i) =
' ' ; } }
int id; char name[
10 ]; char gender[
10 ];
int age;
int height; char identity[
10 ]; char price[
100 ]; char introduce[
500 ]; long long telephone; char email[
100 ]; long long QQ; sscanf(str,
"%d %s %s %d %d %s %s %s %lld %s %lld " , &id, name, gender, &age, &height, identity, price, introduce, &telephone, email, &QQ);
//printf (
"id:%d , name:%s , gender:%s , age:%d , height:%d , identity:%s , price:%s , introduce:%s , telephone:%lld , email:%s , QQ:%lld \n" , id, name, gender, age, height, identity, price, introduce, telephone, email, QQ); char *
pos ;
int cost = strtol(price, &
pos ,
10 );
//strtol :從前往后讀取整數,遇到非數字終止,
10 代表十進制讀取方式
printf (
"cost:%d , pos:%s \n" , cost,
pos );
//pos 的值為找到的第一個非數字的字符指針 //
//char newStr[
1000 ];
//sprintf (newStr,
"編號為%d , 名字為%s , 性別為%s , 年齡為%d , 身高為%d %s %s %s %lld %s %lld \n" , id, name, gender, age, height, identity, price, introduce, telephone, email, QQ);
//printf (
"%s \n" , newStr);
system (
"pause" ); }
程序片段(07):01.strdup.c+02.strerror.c+03.strncpy.c+04.strpbrk.c+05.strrchr.c+06.strrev.c+07.strspn.c 內容概要:字符串經常使用函數
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> char * myStrDup(
char * pStr)
{
char * p = (
char *)
malloc ((
strlen (pStr) +
1 )*
sizeof (
char ));
strcpy (p, pStr);
return p;
}
int main01(
void )
{
char * p1 = NULL;
char * p2 =
"calc" ;p1 = _strdup(p2);
printf (
"p1:%s \n" , p1);
free (p1);system(
"pause" );
}
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main02(
void )
{
char * errorInfo = strerror(errno);
printf (
"errorInfo:%s \n" , errorInfo);system(
"pause" );
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> char * myStrNCpy(
char * pDest,
char * pSrc,
int maxLen)
{if (NULL == pDest ||
NULL == pSrc){
return NULL;}
char * pTemp = pDest;
for (
int i =
0 ; i < maxLen; ++i){*(pTemp + i) = *(pSrc + i);}
return pDest;
}
int main03(
void )
{
char str[
10 ] =
"task" ;
char newStr[
10 ] =
"list" ;myStrNCpy(str +
4 , newStr,
4 );system(str);system(
"pause" );
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * myStrPBrk(
char * pDest,
char * pSrc)
{
if (
NULL == pDest ||
NULL == pSrc){
return NULL ;}
while (
'\0' != *pSrc){
char * pTemp = pDest;
while (
'\0' != *pTemp){
if (*pSrc == *pTemp){
return pTemp;}++pTemp;}++pSrc;}
return NULL ;
}
int main04(
void )
{
char str1[
10 ] =
"abcdefg" ;
char str2[
10 ] =
"123g" ;
char * pRes = myStrPBrk(str1, str2);printf(
"%s, %c \n" , pRes, *pRes);system(
"pause" );
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * myStrRChr(
char * pStr,
char chr)
{
if (NULL == pStr){
return NULL;}
for (
char * p = pStr +
strlen (pStr) -
1 ; p >= pStr; --p){
if (chr == *p){
return p;}}
return NULL;
}
int main05(
void )
{
char str[
100 ] =
"calc123" ;
char * p1 =
strrchr (str,
'c' );
char * p2 = myStrRChr(str,
'c' );
printf (
"p1:%s, p2:%s \n" , p1, p2);system(
"pause" );
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h> void setChr0(
wchar_t * pWStr)
{
wchar_t *pTemp = pWStr;
while (L
'\0' != *pTemp){
if (L
' ' == *pTemp){*pTemp = L
'\0' ;}++pTemp;}
}
void setChrSpace(
wchar_t * pWStr)
{
for (
int i =
0 ; i <
7 ; ++i){
if (L
'\0' == *(pWStr + i)){*(pWStr + i) = L
' ' ;}}
}
wchar_t * myWcsRevByIndex(
wchar_t * pWStr)
{
int i =
0 ;
int j = wcslen(pWStr) -
1 ;
for (
int k =
0 ; k < wcslen(pWStr) /
2 ; ++k){
wchar_t wChr = *(pWStr + i);*(pWStr + i) = *(pWStr + j);*(pWStr + j) = wChr;++i;--j;}
return pWStr;
}
wchar_t * myWcsRevByPoint(
wchar_t * pWStr)
{
wchar_t * pHead = pWStr;
wchar_t * pTail = pWStr + wcslen(pWStr) -
1 ;
while (pHead < pTail){
wchar_t wChr = *pHead;*pHead = *pTail;*pTail = wChr;++pHead;--pTail;}
return pWStr;
}
int main06(
void )
{setlocale(LC_ALL,
"zh-CN" );
wchar_t wstr[
10 ] = L
"海華 愛 王芳" ;setChr0(wstr);myWcsRevByIndex(wstr);myWcsRevByPoint(wstr +
5 );setChrSpace(wstr);myWcsRevByPoint(wstr);wprintf(L
"%ls" , wstr);system(
"pause" );
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main01(
void )
{
char str[
30 ] =
"1zf1141fang011" ;
char subStr[
100 ] =
"zf10zzzzzfang fang love read book" ;
int num =
strspn (str, subStr);
printf (
"%d \n" , num);system(
"pause" );
}
程序片段(08):字符串.c 內容概要:字符串大寫和小寫
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void myStrLwr(
char * pStr)
{
if (
'\0' == *pStr)
return ;
if (
'A' <= *pStr && *pStr <=
'Z' )*pStr +=
32 ;myStrLwr(++pStr);
}
void myStrUpr(
char * pStr)
{
if (
'\0' == *pStr)
return ;
if (
'a' <= *pStr && *pStr <=
'z' )*pStr -=
32 ;myStrUpr(++pStr);
}
int main01(
void )
{
char str[
100 ] =
"asdFGH" ;myStrUpr(str);
printf (
"%s \n" , str);system(
"pause" );
}
程序片段(09):error.c 內容概要:stderror
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main01(
void )
{FILE * pf = fopen(
"C:\\1.txt" ,
"r" );
char * buffer = strerror(errno);
if (NULL == pf){
printf (
"Error:%s \n" , buffer);
abort ();}system(
"pause" );
}
程序片段(10):轉換.c 內容概要:strtodstrtol
#include <stdio.h>
#include <stdlib.h>
int main01(
void )
{
char str[
100 ] =
"劉海華有10個妹子" ;
char * p = NULL;
double db = strtod(str +
8 , &p);
printf (
"%f, %p, %s \n" , db, p, p);system(
"pause" );
}
程序片段(11):字符串.c 內容概要:字符串轉換高級
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> void main01()
{
double data = -
12345.4567 ;
int decimal;
int sign;
int precision =
4 ;
char *buffer;buffer = _ecvt(data, precision, &decimal, &sign);
printf (
"buffer=%s\n" , buffer);
printf (
"sign=%d\n" , sign);
printf (
"decimal=%d\n" , decimal);
printf (
"precision =%d\n" , precision);system(
"pause" );
}
void main02()
{
double data = -
12345.4567 ;
int decimal;
int sign;
int precision =
14 ;
char *buffer;buffer=_fcvt(data, precision, &decimal, &sign);
printf (
"buffer=%s\n" , buffer);
printf (
"sign=%d\n" , sign);
printf (
"decimal=%d\n" , decimal);
printf (
"precision =%d\n" , precision);system(
"pause" );
}
void main03()
{
char buffer[
128 ];
double value =
12.2345678 ;_gcvt(value,
5 , buffer);
printf (
"%s" , buffer);system(
"pause" );
}
void main04()
{
unsigned int num =
32 ;
char str[
32 ] = {
0 };_ultoa(num, str,
2 );
printf (
"%s\n" , str);_ultoa(num, str,
8 );
printf (
"%s\n" , str);_ultoa(num, str,
10 );
printf (
"%s\n" , str);_ultoa(num, str,
16 );
printf (
"%s\n" , str);system(
"pause" );
}
void main05()
{
int num = -
32 ;
char str[
32 ] = {
0 };_ltoa(num, str,
2 );
printf (
"%s\n" , str);_ltoa(num, str,
8 );
printf (
"%s\n" , str);_ltoa(num, str,
10 );
printf (
"%s\n" , str);_ltoa(num, str,
16 );
printf (
"%s\n" , str);system(
"pause" );
}
程序片段(12):字符串插入 內容概要:字符串插入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
int main01(
void )
{
char str[
100 ] =
"wangfang love money " ;
char addStr[
10 ] =
"hai hua" ;
strcat (str, addStr);
printf (
"%s \n" , str);system(
"pause" );
}
int main02(
void )
{
char str[
100 ] =
"wangfang love money" ;
char insertStr[
30 ] =
"hai hua than " ;
char * pPos =
strstr (str,
"love" );
if (NULL != pPos){
char *insertPos = pPos +
strlen (
"love" ) +
1 ;
int insertLen =
strlen (insertStr);
for (
char * p = str +
strlen (str); p >= insertPos; --p){*(p + insertLen) = *p;}
for (
char * p = insertStr;
'\0' != *p; ++p){*insertPos++ = *p;}}
printf (
"%s \n" , str);system(
"pause" );
}
int main03(
void )
{
char * pStr = (
char *)alloca(
20 );
strcpy (pStr,
"wangfang love money" );
printf (
"%s \n" , pStr);
char insertStr[
30 ] =
"hai hua than " ;
int insertLen =
strlen (insertStr);pStr = (
char *)alloca(
strlen (pStr) + insertLen +
1 );
strcpy (pStr,
"wangfang love money" );
printf (
"%s \n" , pStr);
char * pPos =
strstr (pStr,
"love" );
if (NULL != pPos){
char * pInsertPos = pPos +
strlen (
"love" ) +
1 ;
int insertLen =
strlen (insertStr);
for (
char * p = pStr +
strlen (pStr); p >= pInsertPos; --p){*(p + insertLen) = *p;}
for (
char * p = insertStr;
'\0' != *p; ++p){*(pInsertPos++) = *p;}}
printf (
"%s \n" , pStr);system(
"pause" );
}
int main04(
void )
{
char * pStr = (
char *)
malloc (
20 );
strcpy (pStr,
"wangfang love money" );
char insertStr[
30 ] =
"hai hua than " ;
int strLen =
strlen (pStr);
int insertLen =
strlen (insertStr);pStr = (
char *)realloc(pStr, strLen + insertLen +
1 );
char * pPos =
strstr (pStr,
"love" );
if (NULL != pPos){
char * pStrEnd = pStr +
strlen (pStr);
char * pInsertPos = pPos +
strlen (
"love" ) +
1 ;
int insertLen =
strlen (insertStr);
for (
char * p = pStrEnd; p >= pInsertPos; --p){*(p + insertLen) = *p;}
for (
char * p = insertStr;
'\0' != *p; ++p){*pInsertPos++ = *p;}}
printf (
"%s \n" , pStr);system(
"pause" );
}
程序片段(13):五種循環.c 內容概要:算法與遞歸
#include <stdio.h>
#include <stdlib.h> int main01(
void )
{
for (
int i =
0 ; i <
5 ; ++i){system(
"calc" );}system(
"pause" );
}
int main02(
void )
{
int i =
0 ;
while (i <
5 ){system(
"calc" );++i;}system(
"pause" );
}
int main03(
void )
{
int i =
0 ;
if (i <
5 ){
do {system(
"calc" );++i;}
while (i <
5 );}system(
"pause" );
}
int main04(
void )
{
int i =
0 ;
loop:
if (i <
5 )
{system(
"calc" );++i;
}
goto loop;system(
"pause" );
}
int main05(
void )
{
infiniteLoop:system(
"pause" );
goto infiniteLoop;system(
"pause" );
}
void go()
{
printf (
"1" );go();
}
void openCalc(
int n)
{
if (
0 == n)
return ;system(
"calc" );openCalc(n -
1 );
}
int main06(
void )
{openCalc(
5 );system(
"pause" );
}
程序片段(14):調戲馬云.c 內容概要:遞歸的一些常見應用
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h> void leftToRight(HWND win,
int abscissa)
{
if (
0 == abscissa)
return ;SetWindowPos(win, NULL,
1366 - abscissa,
0 ,
200 ,
300 ,
1 );leftToRight(win, abscissa -
1 );
}
void upToDown(HWND win,
int ordinate)
{
if (
0 == ordinate)
return ;SetWindowPos(win, NULL,
683 ,
768 - ordinate,
200 ,
200 ,
1 );upToDown(win, ordinate -
1 );
}
int main01(
void )
{HWND win = FindWindowA(
"StandardFrame" ,
"阿里旺旺" );
if (NULL == win){
printf (
"小碼哥玩兒失蹤! \n" );}
else {leftToRight(win,
1366 );upToDown(win,
768 );}system(
"pause" );
}
程序片段(15):01.遞歸.c+02.騰訊面試題.c 內容概要:遞歸算法
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> void go1()
{go1();
}
void go2(
int n)
{
if (
0 == n)
return ;system(
"calc" );go2(n -
1 );
}
int nItemAdd(
int n)
{
if (
1 == n)
return 1 ;
return n + nItemAdd(n -
1 );
}
int main01(
void )
{
int sum = nItemAdd(
5 );
printf (
"%d \n" , sum);system(
"pause" );
}
void decToBin(
int dec)
{
int modulus = dec /
2 ;
int remainder = dec %
2 ;
if (
0 == modulus){
putchar (remainder +
'0' );
return ;}decToBin(modulus);
putchar (remainder +
'0' );
}
int main02(
void )
{
int decNum =
0 ;
scanf (
"%d" , &decNum);
printf (
"待轉換的十進制整數是:%d \n" , decNum);decToBin(decNum);system(
"pause" );
}
#include <stdio.h>
#include <stdlib.h>
int countMethod(
int stepNum)
{
if (
1 == stepNum){
return 1 ;}
else if (
2 == stepNum){
return 2 ;}
return countMethod(stepNum -
1 ) + countMethod(stepNum -
2 );
}
int main03(
void )
{
printf (
"%d \n" , countMethod(
5 ));system(
"pause" );
}
程序片段(16):stack.h+stack.c+棧實現.c 內容概要:棧實現遞歸
#pragma once//在同一個代碼文件其中,標識當前頭文件僅僅會被包括一次 #define EN 100 typedef
struct
{
int top;
int data[EN];
} Stack;
void initStack(Stack * pStack);
int isEmpty(Stack * pStack);
int isFull(Stack * pStack);
int getTop(Stack * pStack);
void pushStack(Stack * pStack,
int value );
void popStack(Stack * pStack);
#include "stack.h"
#include <memory.h> void initStack(Stack * pStack)
{memset((*pStack).data,
0 , EN *
sizeof (
int ));(*pStack).top = -
1 ;
}
int isEmpty(Stack * pStack)
{
if (-
1 == (*pStack).top)
return 1 ;
return 0 ;
}
int isFull(Stack * pStack)
{
if (EN -
1 == (*pStack).top)
return 1 ;
return 0 ;
}
int getTop(Stack * pStack)
{
return (*pStack).data[(*pStack).top];
}
void pushStack(Stack * pStack,
int value )
{
if (
1 == isFull(pStack))
return ;(*pStack).top +=
1 ;(*pStack).data[(*pStack).top] =
value ;
}
void popStack(Stack * pStack)
{
if (
1 == isEmpty(pStack))
return ;(*pStack).top -=
1 ;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include "stack.h" int main01(
void )
{
int arr[
10 ] = {
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 };Stack
stack ;initStack(&
stack );
for (
int i =
0 ; i <
10 ; ++i){pushStack(&
stack , *(arr + i));
printf (
"%d \n" , getTop(&
stack ));popStack(&
stack );}system(
"pause" );
}
int main02(
void )
{
int arr[
10 ] = {
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 };Stack
stack ;initStack(&
stack );
for (
int i =
0 ; i <
10 ; ++i){pushStack(&
stack , *(arr + i));}
while (!isEmpty(&
stack )){
printf (
"%d \n" , getTop(&
stack ));popStack(&
stack );}system(
"pause" );
}
void decToBin(
int dec)
{
int modulus = dec /
2 ;
int remainder = dec %
2 ;
if (
0 == modulus){
putchar (remainder +
'0' );
return ;}decToBin(modulus);
putchar (remainder +
'0' );
}
int main03(
void )
{
int decNum =
0 ;
scanf (
"%d" , &decNum);
printf (
"decNum = %d \n" , decNum);decToBin(decNum);system(
"pause" );
}
int main04(
void )
{
int decNum =
0 ;
scanf (
"%d" , &decNum);
printf (
"待轉換的十進制整數為:%d \n" , decNum);Stack
stack ;initStack(&
stack );
while (decNum){pushStack(&
stack , decNum %
2 );
printf (
"%d" , getTop(&
stack ));popStack(&
stack );decNum /=
2 ;}system(
"pause" );
}
程序片段(17):字符串常量表達式計算終極版.c 內容概要:編譯原理-第一課表達式計算器
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> void removeBlankSpace(
char * pStr)
{
char * p1 = pStr;
char * p2 = pStr;
while (*p1 = *p2++){
if (
' ' != *p1){++p1;}}
}
int isNumber(
char chr)
{
if (
'0' <= chr &&
'9' >= chr)
return 1 ;
return 0 ;
}
char * parentheses(
char * pStr,
int * pIndex)
{
char * pResultStr = NULL;
int parenNum =
0 ;
int resultStrLeftIndex = *pIndex;do{
switch (*(pStr + *pIndex)){
case '(' :++parenNum;
break ;
case ')' :
if (
0 == parenNum){pResultStr = (
char *)calloc(++*pIndex - resultStrLeftIndex, sizeof(
char ));strncpy(pResultStr, pStr + resultStrLeftIndex, *pIndex - resultStrLeftIndex -
1 );printf(
"(%s) \n" , pResultStr);
return pResultStr;}
else {--parenNum;}}}
while (pStr + (*pIndex)++);
}
double getValue(
char * pStr,
int * pIndex)
{
int dbInt =
0 ;
double dbDouble =
0.0 ;
int index = *pIndex;
while (
'(' == *(pStr +
index )){*pIndex = ++
index ;
char * pTmpStr = parentheses(pStr, pIndex);
double caculateAddSub(
char *);
double dbValue = caculateAddSub(pTmpStr);free(pTmpStr);pTmpStr = NULL;
return dbValue;}
while (isNumber(*(pStr +
index ))){dbInt = dbInt *
10 + (*(pStr +
index ++) -
'0' );}
if (
'.' == *(pStr +
index )){
double dbMutiple =
1.0 ;
while (isNumber(*(pStr + ++
index ))){dbDouble += (*(pStr +
index ) -
'0' ) * (dbMutiple /=
10 );}}*pIndex =
index ;
return dbInt + dbDouble;
}
double caculateMulDiv(
char * pStr,
int * pIndex)
{
double result = getValue(pStr, pIndex);
for (;;){
if (
'*' == *(pStr + *pIndex)){++*pIndex;result *= getValue(pStr, pIndex);}
else if (
'/' == *(pStr + *pIndex)){++*pIndex;result /= getValue(pStr, pIndex);}
else {
break ;}}
return result;
}
double caculateAddSub(
char * pStr)
{
int index =
0 ;
double result = caculateMulDiv(pStr, &
index );
while (
1 ){
switch (*(pStr +
index ++)){
case '\0' :
return result;
case '+' :result += caculateMulDiv(pStr, &
index );
break ;
case '-' :result -= caculateMulDiv(pStr, &
index );
break ;
default :
break ;}}
return result;
}
int main05(
void )
{
char constExpress[
1024 ] = {
0 };printf(
"請輸入待處理的常量表達式:" );scanf(
"%[^\n]" , constExpress);removeBlankSpace(constExpress);printf(
"經過預處理的常量表達式為:%s \n" , constExpress);printf(
"常量表達式的終于計算結果為:%lf \n" , caculateAddSub(constExpress));system(
"pause" );
}
轉載于:https://www.cnblogs.com/zhchoutai/p/8401119.html
總結
以上是生活随笔 為你收集整理的20160218.CCPP体系具体解释(0028天) 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。