我有2个字符串;
string1[20] = "ab cd efgf";
string2[20] = "mn go jpfgt";
需要找到string1中出现在字符串2中的第一个字母 并且在每个字符串中打印地点(索引)和字母后 需要只找到字母而不是数字或空格
例如:字母f,字符串1中的第8位,字符串2中的第9位
答案 0 :(得分:0)
我们初学者应该互相帮助。:) 这是我的三分钱。:)
对于初学者来说,C中的指数从零开始。
所以说得恰到好处
字母f,字符串1中的第7位,字符串2中的第8位
这是一个示范程序。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int find_letter( const char *s1, const char *s2, size_t *i1, size_t *i2 )
{
int success = *s1 && *s2;
if ( success )
{
const char *p1 = s1;
const char *p2;
do
{
success = isalpha( ( unsigned char )*p1 ) &&
( p2 = strchr( s2, *p1 ) ) != NULL;
} while ( !success && *++p1 );
if ( success )
{
*i1 = p1 - s1;
*i2 = p2 - s2;
}
}
return success;
}
int main(void)
{
char string1[] = "ab cd efgf";
char string2[] = "mn go jpfgt";
size_t i1;
size_t i2;
if ( find_letter( string1, string2, &i1, &i2 ) )
{
printf( "%c at position %zu in the first string "
"and at position %zu in the second string\n",
string1[i1], i1, i2 );
}
return 0;
}
程序输出
f at position 7 in the first string and at position 8 in the second string