小编use*_*777的帖子

在二分搜索中计算中点索引

因此,mid在二进制搜索中计算的正确方法是mid = low + ((high - low) / 2)为了处理溢出错误.

我的实现使用无符号的64位变量,我从来没有看到我的数组变得如此之大以至于导致溢出的情况.我是否仍然需要使用上述实现或我可以使用mid = (low + high) / 2

这里最好的做法是什么?

c search

9
推荐指数
3
解决办法
8717
查看次数

为什么要为此数组中的第一个元素打印垃圾?

  #include <stdio.h>
  #include<string.h>
  #include<stdlib.h>

  int main()
  {
     char *words[] = {"mHello", "kWorld", "kHow", "9Are", "3You?"};
     char **parsed = malloc(5);
     int i;
     for (i = 0; i < 5; i++)
     {
        int n = strlen(words[i]);
        parsed[i] = malloc(n);
        strncpy(parsed[i], words[i] + 1, n);
        printf("[%s] ", parsed[i]); 
     }
     printf("\n----------------------\n");
     for (i = 0; i < 5; i++)
       printf("[%s] ", parsed[i]);
         return 0;
  }
Run Code Online (Sandbox Code Playgroud)

parsed[i]包含words[i]没有第一个字符.

输出是

 [Hello] [World] [How] [Are] [You?]
 ----------------------
 [?? o] [World] [How] [Are] [You?]
Run Code Online (Sandbox Code Playgroud)

为什么第一个printf调用parsed[0] …

c string

0
推荐指数
1
解决办法
156
查看次数

为什么此代码会导致分段错误?

我正在编写一个返回字符串的first n(n <= strlen(src))字符的函数.

char* substring(char *src, int n)
{
   char *substr;
   int i;
   for (i = 0; i < n; i++)
     *substr++ = *src++;
   src = src - n;
   *substr = '\0';
   return substr - n;
}
Run Code Online (Sandbox Code Playgroud)

此函数仅在调用一次时返回正确的答案,但在多次调用时返回Seg Fault.

c segmentation-fault

-1
推荐指数
1
解决办法
103
查看次数

标签 统计

c ×3

search ×1

segmentation-fault ×1

string ×1