【问题标题】:C - how to compare index on 2 string?C - 如何比较 2 个字符串的索引?
【发布时间】:2017-12-26 12:08:09
【问题描述】:

我有 2 个字符串;

string1[20] = "ab cd efgf"; string2[20] = "mn go jpfgt";

需要找到出现在字符串 2 中的 string1 中的第一个字母 并在打印每个字符串中的位置(索引)和字母之后 只需要找到字母而不是数字或空格

例如:字母 f,在字符串 1 中的位置 8,在字符串 2 中的位置 9

【问题讨论】:

  • 有没有尝试独立解决这个问题?

标签: c string algorithm


【解决方案1】:

我们初学者应该互相帮助。:) 这是我的三分钱。:)

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

【讨论】:

  • 在 find() 中,如果 s1 或 s2 为 NULL 会发生什么?除此之外,祝贺你的努力。
  • @linuxfan 未定义的行为。与标准 C 字符串函数一样,传递有效指针是函数客户端的任务。
猜你喜欢
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
相关资源
最近更新 更多