繁体   English   中英

在分配的数组中搜索字符串(c)

[英]Search a string in an allocated array(c)

我想在存储在指针中的数组中找到一个字符串。我已经尝试过这种方式:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
int main() {
int n,i;
char (*ptr)[50];
char search[50];
printf("How many students?\n");
scanf("%d",&n);
for(i=0;i<n;i++){
    printf("Enter the name of student:\n");
    scanf("%49s", ptr[i]);
}
printf("Enter a name to search:\n");
scanf("%49s",search);
for (i=0;i<n;i++){
    printf(strcmp(ptr[i],search));

}
}

但是我看到这个错误:

[警告]传递'printf'的参数1使整数指针无须转换

首先, strcmp返回integer而不是地址(请参阅https://linux.die.net/man/3/strcmp )。 替换printf(strcmp(ptr[i],search)); 应该是printf("%d\\n",strcmp(ptr[i],search));

其次, char (*ptr)[50]; 是指向数组的指针,其指向何处? 它是不必要的,更好的是可以使用指针数组char *ptr[50];

char *ptr[50];/* array of 50 char ptr */
for(i=0;i<n;i++){
      ptr[i] = malloc(size); /* allocate memory for each char buf, define size */
      printf("Enter the name of student:\n");
      scanf("%49s", ptr[i]);
}

for (i=0;i<n;i++){
     //printf("%d\n",strcmp(ptr[i],search));
     if(strcmp(ptr[i],search) == 0) {
       printf("%s exists \n",search);
     }
}

同样,一旦工作完成,别忘了通过调用free()为char指针的每个数组free动态分配的内存。 像这样

for(int i =0 ;i < n;i++) {
   free(ptr[i]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM