私はCが初めてで、現在文字列の部分文字列を取得しようとしています。最終的な目標は、一連の数字、つまり 6218 を含む文字列があり、部分文字列を取得し続けるため、最後の数字を削除することです。
6218
621
62
6
現時点では、必要な長さをハードコーディングしているため、最初は 4 の部分文字列を実行しており、結果はまだ 6218 であると予想しています。ただし、gdb で出力すると 62 になります。
以下は私が使用しているコードです。
char * performSearch(char * phoneNumber, int totalLookupNumberCount, numberLookupStruct *numberLookup, int maxCharsToLookup)
{
int i;
for (i = strlen(phoneNumber); i < maxCharsToLookup; i--)
{
char searchNumber[i+1];
strncpy(searchNumber, phoneNumber, 4);
searchNumber[i+1] = '\0';
}
}
関数は次のように呼び出されます。
char * displayName = performSearch(phoneNumber, totalLookupNumberCount, numberLookup, maxCharsToLookup);
私は GDB のコードをステップ実行しているので、最初に行うことは、strncpy の後に searchNumber を出力することです。したがって、ループは実際には使用されません。
渡された変数と strlen が返すものとその正しいことを確認しました
したがって、上記のコードでは、searchNumber が 6218 のままであることを期待していますが、62 を出力しています。また、phoneNumber が char * として関数に渡されることに注意してください。
ご協力いただきありがとうございます。