我如何找到某个字母在句子中的什么位置? (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;
}
我试图找出数字在 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;
}