[英]get last integer value from char array
考慮這樣的一個char數組:
43 234 32 32
我想要最后一個整數形式的值為32
。
字符串大小/長度未知。 在上面的示例中,有4個數字,但是大小會有所不同。
如何才能做到這一點?
我已經將這些值從文件復制到char array.now我想要整數變量中的最后一個數字
在復制時,添加一個計數器,用於復制#個字符。 然后做這個
int count = 0;
char c;
while(c = readCharFromFile()) {
array[count++] = c;
}
int last = array[count - 1];
有很多解決方法。
將每個標記(以空格分隔的字符串)轉換為數字,並在標記用盡時返回最后轉換的值。
掃描行中的令牌,直到到達末尾,然后將最后一個令牌轉換為數字。
從行尾開始。 跳過空格並存儲數字,直到遇到第一個空格,然后將結果轉換為數字。
將字符串拆分為字符串數組,然后將最后一個字符串轉換為數字。
我可以繼續下去,但是你希望我能想到。
int getLastInt(char *data)
{
size_t i = strlen(data);
if(!i--) return -1; // failure
for(;i;--i)
{
if(data[i] == ' ')
{
return atoi(&data[i+1]);
}
}
return -1; // failure
}
只要數據有空格+實際文本就應該可以工作。 您也可以跳過strlen,而僅循環向前,這可能會更快,具體取決於系統的strlen。
如果行上沒有尾隨空白:
int last_int(const char *s)
{
const char *ptr = strrchr(s, ' ');
if (ptr == NULL) {
ptr = s;
} else {
ptr++;
}
return atoi(ptr);
}
如果可能存在尾隨空格,那么您需要執行類似於ProdigySim建議的操作,但要使用更多狀態,請向后越過尾隨空格(如果有),然后越過數字,然后調用atoi()。 無論您做什么,都需要當心邊界條件和邊緣情況,並決定如何處理它們。
我猜你想結合使用strtok_r和atoi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.