[英]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.