面試中常見的C語言字符串操作,快來看看,是否對你有幫助!


字符串倒序輸出
實現邏輯,通過strlen獲取字符串長度,然后通過 len/2 進行交叉賦值,這里需要注意,不需要考慮len是奇數還是偶數的問題。
如果len是奇數,最后一個字符就不需要倒序,如果是偶數,最后兩個字符就倒序。
#include “stdio.h”
void rechange_str(char *str)
{
int i, len;
char tmp;
if (NULL == str) {
return ;
}
len = strlen(str);
for (i = 0; i < len/2; i ++) {
tmp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = tmp;
}
}
int main(void)
{
char str[20] = “hello,world”;
printf(“%sn”,str);
rechange_str(str);
printf(“%sn”,str);
return (0);
}
程序輸出
hello,world
dlrow,olleh
——————————–
Process exited after 0.02841 seconds with return value 0
請按任意鍵繼續. . .
整型轉字符串
實現邏輯,每個整數看其轉換進制,從個位到十位百位都可以通過%操作加上/操作獲得,再用一個字符數組保存0-F。
用個位數對應值轉為字符,注意轉換出的字符串是反向的,還要考慮傳入的若是負數如何處理,再用翻轉字符串完成最后整個操作。
下面這段代碼需要好好研究一下,最好自己運行試試。
#include “stdio.h”
char *sky_itoa(int value, char *str, unsigned int radix)
{
char list[] = “0123456789ABCDEF”;
unsigned int tmp_value;
int i, j, k;
if (NULL == str) {
return NULL;
}
if (2 != radix && 8 != radix && 10 != radix && 16 != radix) {
return NULL;
}
i = 0;
k = 0;
if (radix == 10 && value < 0) {
tmp_value = (unsigned int)(0 – value);
str[i++] = ‘-‘;
k = 1;
} else {
tmp_value = (unsigned int)value;
}
do {
str[i++] = list[tmp_value%radix];
tmp_value /= radix;
} while(tmp_value);
str[i] = ‘国产精品区一区二区免费