我有一個包含數字的字符陣列。
char number[] = "12000000"
我需要一個函式來在每 3 位數字中插入一個分隔符。喜歡:
char result[] = "12,000,000"
我的函式接受數字作為 achar pointer并且它也需要回傳結果作為 a char pointer。
char* insert_divider(char* number) {
some magic;
return result;
}
我不知道使用指標。謝謝。
uj5u.com熱心網友回復:
這里有一個函式,它從末尾開始為c每個num字符添加字符。您需要確保字串緩沖區足夠長以容納修改后的字串。
char *addEvery(char *str, char c, unsigned num)
{
char *end = str;
if(str && *str && num)
{
size_t count = 1;
while(*(end)) end ;
while(end != str)
{
end--;
count ;
if(!(count % (num 1)) && str != end)
{
memmove(end 1, end, count);
*end = c;
count ;
}
}
}
return str;
}
int main(void)
{
char str[100] = "120000000000";
printf("%s", addEvery(str,',',3));
}
uj5u.com熱心網友回復:
我想出了這段代碼:
char *result;
result = (char*) malloc(15);
int len= strlen(input);
uint8_t cursor= 0;
for(int i = 0; i < len; i ) {
if ((len- i) > 0 && (len- i) % 3 == 0) {
result[i cursor] = ',';
cursor ;
}
result[i cursor] = input[i];
}
result[len cursor] = '\0';
感謝大家的幫助和建議。
uj5u.com熱心網友回復:
這是另一種方法:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* insert_divider(char* number, size_t length) {
int j = length length/3; // every 3 digits a ',' will be inserted
char *out = (char*)malloc(j 1);
out[j--] = '\0';
for (int i = length - 1, k = 1; i >= 0; i--, k ) {
out[j--] = number[i];
if ((k%3) == 0) {
out[j--] = ',';
}
}
return out;
}
int main(){
char number[] = "12000000";
char *outNumber = insert_divider(number, strlen(number));
printf("%s", outNumber);
free(outNumber);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/352369.html
上一篇:如何在分隔符和輸入新列之間多次提取字串的一部分T-SQL
下一篇:使用python遍歷二維陣列
