2012-12-03 31 views
8

Làm thế nào để viết mã bên dưới trong C. và là bất kỳ hàm dựng sẵn nào của chúng để kiểm tra độ dài của mảng.Làm thế nào để kiểm tra xem một chuỗi nằm trong một chuỗi các chuỗi trong C?

Python Mã

x = ['ab', 'bc' , 'cd'] 
s = 'ab' 

if s in x: 
    //Code 
+0

có thể trùng lặp của http://stackoverflow.com/questions/8848940/search-a-string-in-an-array-of-strings –

+0

Bài đăng này là Python dịch sang C, do đó, nó không thể là bản sao một câu hỏi đặt ra trong C. –

+0

@ CareyGregory Tại sao không? OP phải viết lại toàn bộ chương trình thành C, mã Python gốc không hữu ích. – Lundin

Trả lời

10

Không có chức năng để kiểm tra chiều dài của mảng trong C. Tuy nhiên, nếu mảng được khai báo trong phạm vi tương tự như nơi bạn muốn kiểm tra, bạn có thể làm như sau

int len = sizeof(x)/sizeof(x[0]); 

Bạn phải lặp qua x và làm strcmp trên mỗi phần tử của mảng x, để kiểm tra xem s có giống với một trong các phần tử của x hay không.

char * x [] = { "ab", "bc", "cd" }; 
char * s = "ab"; 
int len = sizeof(x)/sizeof(x[0]); 
int i; 

for(i = 0; i < len; ++i) 
{ 
    if(!strcmp(x[i], s)) 
    { 
     // Do your stuff 
    } 
} 
+0

Bạn đã thực hiện chỉnh sửa đó đúng lúc. –

+0

@CareyGregory - bài đăng gốc của tôi không chính xác - đây không phải là chức năng. Và nó chỉ hoạt động nếu mảng được khai báo trong cùng một phạm vi. – user93353

+2

Tôi không nói bài đăng của bạn không chính xác; không phải vậy. Nó chỉ đơn giản là ít hơn nó có thể có được, nhưng bạn cố định nó. Vì vậy, tất cả là tốt, có? :-) –

7

Cái gì đó như thế này ??

#include <stdio.h> 
#include <string.h> 

int main() { 
    char *x[] = {"ab", "bc", "cd", 0}; 
    char *s = "ab"; 
    int i = 0; 
    while(x[i]) { 
     if(strcmp(x[i], s) == 0) { 
      printf("Gotcha!\n"); 
      break; 
     } 
     i++; 
    } 
} 
0

Có chức năng tìm chiều dài chuỗi. Đây là strlen từ string.h

Và sau đó bạn có thể sử dụng strcmp từ cùng một tiêu đề để so sánh các chuỗi, giống như các câu trả lời khác nói.

Các vấn đề liên quan