[英]Passing an array to a function, but if it doesn't return true I want to pass an extra digit?
因此,對於我的代碼,我想將參數傳遞給函數,如果它沒有返回true,我希望它傳遞int數組中的下一個索引位。
因此,如果areaIntA [0] = 0; 不返回true,我希望它傳遞areaIntA [0] [1] = 01; 如果返回的結果不是true,則areaIntA [0] [1] [2] = 012; 等等...
我更新的代碼:
areaInt = areaIntA[0];
do {
areaCheck = isRegistered(file, areaInt);
if (areaCheck != 1)
{
areaInt = areaIntA[i] * 10 + areaIntA[i+1];
i++;
}
} while (areaCheck != 1);
cout << areaCheck << endl;
這樣可以編譯,但是顯示出分段錯誤,有人知道為什么嗎?
讓函數接受一個列表(向量)。 對於每個調用,請在末尾添加一個新元素。
例如。
List< int?> areaIntList;
do {
areaIntList.Add(areaInt[i]);
areaCheck = isRegistered(file, areaInt[i]);
if (areaCheck != 1)
{
i++;
}
} while (areaCheck != 1);
isRegistered包含您使用的類型的列表。
您在某種字符串上下文中奇怪地將數組整數值等同。 這通常意味着以10為底的數學運算。
嘗試:
int val = 0;
do {
val = 10 * val + areaInt[i];
areaCheck = isRegistered(file, val);
if (areaCheck != 1)
i++;
} while (areaCheck != 1);
在第一遍中, val
將是areaInt[0]
的值; 在第二遍,它將是areaInt[0]
然后是areaInt[1]
(例如0和1變為1,1和2變為12)。 等等。
我對您的問題的理解是:
isRegistered
是一個函數,它接收文件和可變長度的數字字符串,如果該字符串已注冊,則返回1
,否則返回0
。 areaInt
是C樣式的字符串,例如"31526"
。 "3"
。 如果沒有,則查看是否注冊了"31"
; 如果不是,請嘗試"315"
等,直到用完areaInt
所有數字。 areaInt
的子字符串,這是最短的注冊字符串,如果找不到注冊字符串,則返回錯誤。 這就是我要做的。
- 如果輸入字符串
areaInt
為空,則返回錯誤。- 將計數器
i
從1循環到字符串的長度:
- 從
areaInt
的前i
字符構造一個測試字符串s
。- 測試
s
是否已注冊。 如果是,請跳出循環並返回s
。 如果不是,請繼續循環。- 如果循環在
areaInt
的末尾完成,並且找不到注冊的字符串,則返回錯誤。
注意。 確保您停在areaInt
。 否則,如果到達areaInt
的末尾但仍未找到已注冊的字符串,則將溢出緩沖區並嘗試讀取字符串中未包含的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.