gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:49:07 27 4
gpt4 key购买 nike

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

#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));

}
}

但我看到这个错误:

[Warning] passing argument 1 of 'printf' makes pointer from integer without a cast

最佳答案

首先,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通过调用 free() 为每个 char 指针数组动态分配内存。像这样的事情

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

关于c - 在分配的数组中搜索字符串(c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com