私は2つの文字列を持っています。C - 2文字列のインデックスを比較する方法は?
string1[20] = "ab cd efgf"; string2[20] = "mn go jpfgt";
場所(インデックス)と、文字列の各文字には 手紙ではない数字またはスペース
だけを見つける必要がある文字列2 にし、印刷後に表示される文字列1の最初の文字を見つける必要があります例えば:文字列内の場所9内の文字列1位8で文字F、2
私は2つの文字列を持っています。C - 2文字列のインデックスを比較する方法は?
string1[20] = "ab cd efgf"; string2[20] = "mn go jpfgt";
場所(インデックス)と、文字列の各文字には 手紙ではない数字またはスペース
だけを見つける必要がある文字列2 にし、印刷後に表示される文字列1の最初の文字を見つける必要があります例えば:文字列内の場所9内の文字列1位8で文字F、2
我々初心者がお互いを助けるべきである:) ここでは私の3セントです:)
012。Cのスターターインデックスは0から始まります。
だから、ここでは、文字列内の場所8の文字列1位7における
文字F、2
が実証プログラムであると言うことは正しくなります。
#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
、s1またはs2がNULLの場合はどうなりますか?これとは別に、努力をお祝いします。 – linuxfan
@linuxfan未定義の動作です。標準のC文字列関数と同様に、関数のクライアントが有効なポインタを渡す作業です。 –
いかなる試みもありますか? find()内の – dasblinkenlight