我想在另一个字符数组中找到一个字符串。我试着通过字符来比较它的性格。但我无法访问个性,我需要一些帮助。
码
#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学习编程。
答案 0 :(得分:1)
<强>修复强>
- 迭代计数&lt; len(不是&lt; = 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运行的示例,以阻止泄漏..