C-如何比较2个字符串上的索引?
我有两根绳子C-如何比较2个字符串上的索引?,c,string,algorithm,C,String,Algorithm,我有两根绳子 string1[20]=“ab-cd-efgf”; string2[20]=“mn go jpfgt” 需要查找字符串1中出现在字符串2中的第一个字母 然后打印每个字符串中的位置(索引)和字母 只需要找到字母,不需要数字或空格 例如:字母f,在字符串1的位置8,在字符串2的位置9我们初学者应该互相帮助。:) 这是我的三分钱 对于初学者来说,C中的索引从零开始 所以这样说是正确的 字母f,在字符串1中的位置7,在字符串2中的位置8 这是一个演示程序 #include <stdi
string1[20]=“ab-cd-efgf”;
string2[20]=“mn go jpfgt”代码>
需要查找字符串1中出现在字符串2中的第一个字母
然后打印每个字符串中的位置(索引)和字母
只需要找到字母,不需要数字或空格
例如:字母f,在字符串1的位置8,在字符串2的位置9我们初学者应该互相帮助。:)
这是我的三分钱
对于初学者来说,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;
}
是否尝试独立解决此问题?在find()中,如果s1或s2为NULL,会发生什么情况?除此之外,祝贺您的努力。@linuxfan未定义的行为。与标准C字符串函数一样,传递有效指针是函数客户端的任务。
f at position 7 in the first string and at position 8 in the second string