我如何找到某个字母在句子中的什么位置? (c编程)

how do i find on what place a certain letter is in a sentence? (c programming)

我试图找出数字在 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;
}

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

#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;
}

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

您正在尝试将单个字符与字符串进行比较,但 strcmp() 将比较两个字符串。您可以通过放弃整个循环并简单地使用 strchr() 来定位角色来解决这个问题。 strstr(text1, text2) 也可以工作,因为 text2 是一个字符串(正确地以 null 结尾)。

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

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

您只能使用 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 个字母。

strcspn 将搜索字符列表和 return 第一个匹配项的索引。在这种情况下,列表只是字母 k。如果找不到匹配项,它 returns 搜索字符串的长度。

#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;
}