簡體   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