【问题标题】:how do i find on what place a certain letter is in a sentence? (c programming)我如何找到某个字母在句子中的什么位置? (c 编程)
【发布时间】:2017-09-28 09:36:54
【问题描述】:

我正在尝试查找数字在 c 中的句子中的位置。我对编程有点陌生,我不知道为什么我的代码不起作用。

我不断收到此警告,但我不知道它是什么意思(英语不是我的第一语言)

传递 'strcmp' 的参数 1 使指针从整数而不进行强制转换 [-Wint-conversion] Main.c /TweeIntegers 第 20 行 C/C++ 问题

我的代码:

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

int main()
{
    int i, y;
    char x;

    char text1[] = "een stuk text";
    char text2[] = "k";

    for ( i = 0; i < strlen(text1); i++ )
    {
        x = text1[i];
        y = strcmp( x, text2 )
    }

    printf("%d", i);

    return 0;
}

【问题讨论】:

  • 变量x是单个charstrcmp函数比较字符串(即以零结尾的字符数组)。
  • 您将一个char(即一个整数)传递给一个接收两个char *(即字符串)的函数
  • 对于一般情况(寻找子字符串),试试strstr()

标签: c arrays text warnings editing


【解决方案1】:

strcspn 将搜索字符列表并返回第一个匹配项的索引。在这种情况下,列表只是字母k。如果未找到匹配项,则返回搜索到的字符串的长度。

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

int main()
{
    int y = 0;
    char text1[] = "een stuk text";
    char text2[] = "k";

    y = strcspn ( text1, text2);

    printf("%d", y);

    return 0;
}

【讨论】:

    【解决方案2】:

    如果您只是在寻找一个字符和第一个位置,那么您可以使用以下代码:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
      int i;
    
      char text1[] = "een stuk text";
      char charYouLookFor = 'k';
    
      for ( i = 0; i < strlen(text1); i++ )
      {
        if (text1[i] == charYouLookFor)
           break;
      }
    
      printf("%d", i);
    
      return 0;
    }
    

    如果您要查找文本中文本的位置或字符的第二个位置,则代码需要更复杂。

    【讨论】:

    • char charYouLookFor = "k"; "k"的指针的整数值分配给您的变量,转换为char
    【解决方案3】:

    您试图将单个字符与字符串进行比较,但strcmp() 比较了两个字符串。您可以通过删除整个循环并简单地使用strchr() 来定位字符来解决此问题。 strstr(text1, text2) 也可以,因为 text2 是一个字符串(正确地以 null 结尾)。

    string.h 中的预制搜索功能:

    • strchr() 在字符串中找到单个字符。
    • strstr() 在另一个字符串中找到一个子字符串。
    • strpbrk() 从另一个字符串中的指定字符列表中查找任何字符。

    【讨论】:

      【解决方案4】:

      您只能使用strcmp() 来比较整个字符串,这不是您想要做的。

      要定位字符串中的单个字符,只需使用strchr()。无需自己循环:

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
          int i, y;
          char x;
      
          const char text[] = "een stuk text";
          char letter = 'k';
      
          const char * const found = strchr(text, letter);
          if(found != 0)
            printf("%d\n", (int) (found - text));
      
          return 0;
      }
      

      打印出来:

      7
      

      正确的是第 8 个字母。

      【讨论】:

        猜你喜欢
        • 2020-03-19
        • 1970-01-01
        • 1970-01-01
        • 2019-06-20
        • 2020-11-22
        • 1970-01-01
        • 1970-01-01
        • 2020-03-06
        • 1970-01-01
        相关资源
        最近更新 更多