2015-09-28 63 views
0

我想在另一个字符数组中找到一个字符串。我试图比较它字符由charcter。但我无法访问个人角色,我需要一些帮助。字符串的位置 - 从指针数组访问单个字符串

代码

#include <stdio.h> 
#include "source.h" 

int main() 
{ 
    char *str[] = {"one","two","three","four"}; 
    int index;  

    index= locate_string(str, 4, "one"); 
    printf("String one is in the position %d\n", index); 

    return 0; 
} 

int locate_string(char **stringArray, int len, char * string) 
{ 
    int count = 0; 
    while(count <= len){ 
     int j = 0; 
     char *temp = (*stringArray)[count]; 

     while(j < len){ 
     if(temp == string[j]){ 
      j++;     
     } 
     } 
     if(j == len-1){ 
     return count-j; 
     } 
    } 
    return -1; 
} 

谢谢您的帮助。我从上周开始用C语言学习编程。

+2

'而(计数<= LEN){'应该是'while(count amdixon

回答

1

修复

  • 在计数迭代< LEN(不< = LEN)
  • 使用strcmp简化字符串比较(那是什么它那里)
  • 增量计数器count正确循环串列阵

代码

#include <stdio.h> 

int main(void) 
{ 
    char *str[] = {"one","two","three","four"}; 
    int index;  

    index = locate_string(str, 4, "one"); 
    printf("String one is in the position %d\n", index); 

    return 0; 
} 

int locate_string(char **stringArray, int len, char *string) 
{ 
    int count = 0; 
    while(count < len) 
    { 
    if(!strcmp(stringArray[count], string)) 
    { 
     return count; 
    } 
    ++count; 
    } 
    return -1; 
} 

输出

$ gcc -g test.c -o test 
$ valgrind ./test 
==12705== Memcheck, a memory error detector 
==12705== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. 
==12705== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info 
==12705== Command: ./test 
==12705== 
String one is in the position 0 
==12705== 
==12705== HEAP SUMMARY: 
==12705==  in use at exit: 0 bytes in 0 blocks 
==12705== total heap usage: 0 allocs, 0 frees, 0 bytes allocated 
==12705== 
==12705== All heap blocks were freed -- no leaks are possible 
==12705== 
==12705== For counts of detected and suppressed errors, rerun with: -v 
==12705== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) 

以上是与Valgrind的停止泄漏一个样品运行..

+0

谢谢。我以错误的方式访问了字符串。并感谢关于valgrind的提示。我接受你的答案。 – Mitty