strlen所作的僅僅是乙個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域)開始掃瞄,直到碰到第乙個字串結束符'\0'為止,然後返回計數器值(長度不包含「\0」)
isspace 若引數c為空格字元,則返回true,否則返回null 此為巨集定義,非真正函式
在mian函式裡實現求非空格字串長度
void main()
while (isspace(p[j]) && p[j] != '\0')
return;
}
進行函式封裝:
//求非空格字串長度
void getcount(char*str/*in*/,int*pcount)
int i = 0;
int j = strlen(p) - 1;
while (isspace(p[i]) && p[i] != '\0')
while (isspace(p[j]) && p[j] != '\0')
count = j - i + 1;//7-1+1
*pcount = count;
return;
}
去除字串的前後空格:
int trimspace(char*str/*in*/,char*newstr/*in*/)
int i = 0;
int j = strlen(p) - 1;
while (isspace(p[i]) && p[i] != '\0')
while (isspace(p[j]) && p[j] != '\0')
count = j - i + 1;//7-1+1
strncpy(newstr,str+i,count);//從str的第i個開始 拷貝count個字元
//newstr後面手工補0
newstr[count] = '\0';
return 1;
}void main()
; trimspace(p, buf);
printf("buf:%s\n",buf);
printf("hehhehe");
system("pause");
return;
}
去除字串的前後空格
//這樣做的前提是str所指向的記憶體空間必須可以被修改才行:
int trimspace02(char*str/*in*/)
int i = 0;
int j = strlen(p) - 1;
while (isspace(p[i]) && p[i] != '\0')
while (isspace(p[j]) && p[j] != '\0')
count = j - i + 1;//7-1+1
strncpy(str, str + i, count);//從str的第i個開始 拷貝count個字元
//newstr後面手工補0
str[count] = '\0';
return 1;
}void main()
C語言提高20 字串反轉 兩頭堵的變形
方法1 指標 在主函式裡實現 void main while p1 方法2 遞迴逆序 3個點 01 通過遞迴的方式 逆向列印 include include include include 掌握遞迴 引數入棧模型 與 函式巢狀呼叫返回流程 關鍵在於理解返回流程 void inverse02 char...
C語言的專案開發模型(1) 字串兩頭堵
得到字串的長度,然後 1得到的是陣列的最大座標位置 j strlen inmybuff 1 指標從輸入字串的前面向後判斷,找到不是空格的地方 while isspace inmybuff i inmybuff i 0 指標從後往前尋找,找到不是空格的地方 while isspace inmybuff...
day4 字串的兩頭堵模型
方法一 int main01 while isspace p j p j 0 count j i 1 printf count d n count printf hello world n system pause return 0 求非空格的字串長度 方法二 api函式 void getcount...