我是 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 * 传递给函数。
感谢您的任何帮助,您可以提供。