2015-09-27 63 views
0

我想弄清楚如何测试两个字符串在一起,以查看名为“目标”的数组中的字母是否包含在数组“str1”中。如果target中的所有字母都可以在str1中找到,那么testWord返回true,否则返回false。这是我到目前为止的代码,找到一个字母后停止。我如何继续循环str1的其余部分?C编程拼字游戏类型

#include <stdio.h> 
int testWord(char str1[], char target[]); 

int main() { 
    char str1 [8] = {'q','i','j','i','b','o'}; 
    char target [3] = {'j','i','b'}; 
    int a= testWord(str1, target); 
    printf("%d", a); 
    return 0; 
} 

int testWord(char str1[], char target[]) { 
    for(int i = 0; i < sizeof(*str1) ; i++) { 
     for (int j = 0; j < sizeof(*target); j++) { 
      if (strstr(str1, target)) { 
       printf("%s%c%s\n","Target letter ", target[i], " was found"); 
       //delete letter from set 
       str1[i - 1] = str1[i]; 
       i++; 
      } 
     } 
    } 
    return 0; 
} 
+0

使用'strstr()'。 – owacoder

+0

您能否以人类可读的方式格式化您的代码? FOr实例一致地在操作符周围添加空格,缩进代码一致等。 –

回答

1

有在你的代码中的许多错误,

  1. 您正确初始化数组,但他们不是字符串。为了让他们有效字符串在你需要nul终止它们感,

    char str1[8] = {'q', 'i', 'j', 'i', 'b', 'o', '\0'}; 
    /*            ^nul */ 
    char target[3] = {'j', 'i', 'b', '\0'}; 
    /*        ^nul */ 
    
  2. 您使用的sizeof操作错误

    sizeof(*str1) 
    

    总会给你1因为str1类型是char *因此*str1的类型是charsizeof(char)是根据定义1

    阅读关于sizeof运算符,它不返回字符串的长度,它在编译时计算参数,在数组情况下给出数组的大小或数组的大小。你的不是一个数组,即使你在参数定义中指定了它的大小,它将被转换为类型为char *的指针。

这些只有两个错误,但是对于这么少量的代码它们有很多错误。

+0

谢谢,我认为我解决了它: – cdan