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