小编luo*_*bin的帖子

期望'const char*'但参数在C中的类型为'char**'

我正在尝试编写一个函数来搜索查找指定键的数组.参数n指定数组的有效大小,必须根据strcmp强加的字典顺序进行排序.如果找到键,则函数返回数组中出现该键的索引.因此,它可以返回子字符串的索引.但是,它出现了两个我无法解决的错误.请帮忙.

jiebin@jiebin-ThinkPad-Edge-E530:~/Program_C/programming_abstractions_in_c/FindStringInSortedArray$ gcc FindStringInSortedArray.c -o FindStringInSortedArray
FindStringInSortedArray.c: In function ‘FindStringInSortedArray’:
FindStringInSortedArray.c:7:3: warning: passing argument 1 of ‘strlen’ from incompatible pointer type [enabled by default]
/usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘char **’
jiebin@jiebin-ThinkPad-Edge-E530:~/Program_C/programming_abstractions_in_c/FindStringInSortedArray$
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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

int FindStringInSortedArray(char *key,char *array[],int n)
{
  int mid,cmp;
  int low=strlen(array)-n;
  int high=n;
  if(low > high) return(-1);
  mid = (low+high)/2;
  cmp = strcmp(key,array[mid]);
  if(cmp==0) return(mid);
  if(cmp<0){
    return(FindStringInSortedArray(key,array,n/2));
   }else{
    return(FindStringInSortedArray(key,array+n/2,n));
   }
}

int main()
{
  char key[2]="ab";
  char *array[10]={"ab","bc","cd","de","ef","fg","gh","hi","ij","jk"};
  int test=FindStringInSortedArray(key,array,10); …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers

3
推荐指数
1
解决办法
2万
查看次数

两个相关java类中的java.lang.NullPointerException

我实现了两个java类来解决渗透问题,但它抛出了以下异常

java.lang.NullPointerException
    at PercolationStats.<init>(PercolationStats.java:24)
    at PercolationStats.main(PercolationStats.java:54)
Run Code Online (Sandbox Code Playgroud)

程序:

public class PercolationStats {
    int t=0;
    double[] sample_threshold;
    Percolation B;
    int N1;
    public PercolationStats(int N, int T) {
        t=T;
        N1 = N;
        int number_of_open=0;
        for(int i=0;i<T;i++) {
            B=new Percolation(N1);
            while(!B.percolates()) {
                double r1 = Math.random();
                int open_i = (int)(r1*N1);
                double r2 = Math.random();
                int open_j = (int)(r2*N1);
                B.open(open_i,open_j);
            }
            for(int k=0;k<N1;k++) {
            for(int j=0;j<N1;j++) {
                if(B.isOpen(k, j))
                    number_of_open++;
            }
            sample_threshold[i] = (number_of_open*1.0)/N1;
            }

        }
    }
    public double mean() {
        double sum = 0.0; …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception

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

标签 统计

arrays ×1

c ×1

java ×1

nullpointerexception ×1

pointers ×1