首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过仅检查char数组的变量单个元素来使用strncmp

通过仅检查char数组的变量单个元素来使用strncmp
EN

Stack Overflow用户
提问于 2021-07-25 10:51:05
回答 3查看 65关注 0票数 2

我正在尝试编写一段代码,将char数组中的字母逐个与确定的字母(字母'l')进行比较。当在输出字符串中出现这种情况时,有两个‘l’。例如,"lily“应该变成"llilly”。我不知道如何在C中实现这一点,因为如下所示:

代码语言:javascript
运行
AI代码解释
复制
strncmp (word[indx],'l',1)  //where indx is an iterator of the char array 'word'

无效,因为第一个参数应该是'word‘,但之后就没有办法遍历'word’了。

当然,如果我们这样写:

代码语言:javascript
运行
AI代码解释
复制
strncmp (word,'l',indx)

问题是,现在在indx等于或大于2之后,我们一次检查多个字母,而我们真正想要的是一次检查一个字符。

这是我到目前为止的代码:

代码语言:javascript
运行
AI代码解释
复制
#include <stdio.h>
#include <string.h>

const char* ModifyString (char word []);

int main(){
  char word[6]="Hello";
  printf("The result is %s \n", ModifyString(word));
  return 0;
}

const char* ModifyString (char word []) {
  size_t lengthString=strlen(word);
  char modifiedString[lengthString*2+1]; //to fit the nul terminator and all the 'l's in case the word only contained 'l's.
  int indxModWord=0;

  for (int indx=0; indx<lengthString;indx++) {
    //This line does not express what I want to do:
    if (strncmp(word,"l",indx)==0) {
      modifiedString[indxModWord]=word[indx];
      indxModWord++;
    }

    // if 'l' in word make it appear twice in the output string
    else {
      modifiedString[indxModWord]='l';
      indxModWord++;
      modifiedString[indxModWord]='l';
      indxModWord++;
    }
  }

  printf("%s", modifiedString);
}

有没有人知道我应该怎么用C语言做这件事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-25 12:08:39

只需与其他答案中的字符进行比较。

当然,如果您愿意,也可以使用strncmp来比较字符。

代码语言:javascript
运行
AI代码解释
复制
strncmp (&word[indx],(char []){'l'},1);

或者,您可以编写以下函数:

代码语言:javascript
运行
AI代码解释
复制
int compareCharsUsingStrncmp(const char a, const char b)
{
    return strncmp((char[]){a}, (char[]){b}, 1);
}

代码语言:javascript
运行
AI代码解释
复制
int compareCharsUsingStrncmp(const char a, const char b)
{
    return strncmp(&a, &b, 1);
}

智能编译器甚至不会调用strncmp :)

代码语言:javascript
运行
AI代码解释
复制
compareCharsUsingStrncmp:
        movzx   eax, dil
        movzx   esi, sil
        sub     eax, esi
        ret
票数 2
EN

Stack Overflow用户

发布于 2021-07-25 11:09:00

在遍历给定的字符串时,检查字符串的当前字符是否为目标字符(在本例中为'l')。

代码:

代码语言:javascript
运行
AI代码解释
复制
const char* ModifyString (char word [])
{
    size_t lengthString=strlen(word);
    char modifiedString[lengthString*2+1]; //to fit the nul terminator and all the 'l's in case the word only contained 'l's.

    int indxModWord=0;
    char targetCharacter = 'l';

    for (int indx=0; indx<lengthString; indx++)
    {
        if (word[indx] != targetCharacter)
        {

            modifiedString[indxModWord] = word[indx];
            indxModWord++;
        }
        else
        {
            modifiedString[indxModWord] = targetCharacter;
            indxModWord++;
            modifiedString[indxModWord] = targetCharacter;
            indxModWord++;

        }
    }
    modifiedString[indxModWord] = '\0';
    printf("%s", modifiedString);
}
票数 0
EN

Stack Overflow用户

发布于 2021-07-25 11:14:40

代码语言:javascript
运行
AI代码解释
复制
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char *ModifyString (char* word) {
   size_t  lengthString = strlen(word);

  //to fit the nul terminator and all the 'l's in case the word only contained 'l's.
  char *modifiedString;
  modifiedString=(char*)malloc(lengthString*2+1);

  size_t indxModWord=0;

  for (int indx=0; indx<lengthString;indx++) {

    //This line does not express what I want to do:
    if (word[indx] != 'l'){
      modifiedString[indxModWord]=word[indx];
      indxModWord++;
    }

    // if 'l' in word make it appear twice in the output string
    else {
      modifiedString[indxModWord]='l';
      indxModWord++;
      modifiedString[indxModWord]='l';
      indxModWord++;
    }
  }

  return (char *)modifiedString;
  
}

int main(){
  char word[]="Hello";
  char *result ;
  result =  ModifyString(word);
 
  printf("The result is %s \n",result);
  
  return 0;
}

请确认这是否是您要找的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68517836

复制
相关文章
Excel技巧:锁定包含公式的单元格
有时候,我们想保护工作表中的公式,不让用户能够随便修改,但是又不想限制用户编辑除公式之外的数据。此时,不能够简单的使用“保护工作表”命令,稍微需要添加一点技巧来实现。
fanjy
2022/06/04
3.1K0
Excel技巧:锁定包含公式的单元格
Excel公式技巧90:剔除单元格区域中的空单元格
有时候,在一列数据中有许多空单元格,导致数据不连续,我们需要剔除这些空单元格,让数据区域连起来。
fanjy
2021/07/12
4.6K0
Excel公式技巧90:剔除单元格区域中的空单元格
VBA技巧:当单元格区域中包含由公式返回的空单元格时,如何判断?
在VBA中,我们经常会遇到需要检查某个单元格区域是否为空的情形。我们可以使用下面程序中的代码来检查单元格区域是否为空。
fanjy
2022/06/04
2.3K0
Excel公式练习32: 将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格
本次的练习是:如下图1所示,单元格区域A1:D6中是一系列数据,其中包含空单元格,现在要将它们放置到一列中,并删除空单元格,如图中所示的单元格区域G1:G13,如何使用公式实现?
fanjy
2020/02/18
2.4K0
Excel公式练习33: 将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格(续)
本次的练习是:这个练习题与本系列上篇文章的练习题相同,如下图1所示,不同的是,上篇文章中将单元格区域A1:D6中的数据(其中包含空单元格)转换到单独的列(如图中所示的单元格区域G1:G13)中时,是以行的方式进行的,即先放置第1行中的数据、再放置第2行……依此类推。这里,需要以列的方式进行,即先放置第1列中的数据、再放置第2列中的数据……依此类推,最终结果如图中所示的单元格区域H1:H13,如何使用公式实现?
fanjy
2020/02/18
2.4K0
【Excel】用公式提取Excel单元格中的汉字
昨天一个前端的朋友找我帮忙用excel提取代码中的汉字(字符串),可算费了劲儿了,他要提取的内容均在单引号中,但问题是没有统一的规律,同一个单元格可能存在多个要提取的内容,而且汉字中间也夹杂其他字符。
数据科学社区
2018/06/11
8.7K0
Excel公式练习64: 获取单元格区域中移除空单元格后的值
导语:在前面的文章中有一些与本文类似的案例。要想熟练掌握一门技术,就是要不断地反复练习。
fanjy
2020/05/25
3.1K0
Excel公式练习64: 获取单元格区域中移除空单元格后的值
Excel公式练习:合并单元格中的条件求和
引言:本文的练习整理自chandoo.org。多一些练习,想想自己会怎么解决这个问题,看看别人又是怎样解决的,这样能够快速提高Excel公式编写水平。
fanjy
2022/11/16
2.5K0
Excel公式练习:合并单元格中的条件求和
Excel公式技巧100:遍历单元格中的数据
有时候,我们需要从单元格数据中提取出满足条件的值。例如,下图1所示的单元格B3中的数据“NO13859724621”,我们想要得到相邻两个数字组成的最大的两位数。
fanjy
2021/07/30
6.5K0
如何高亮显示包含有数字的单元格?
大海:在Excel里判断一个文本是否包含数字稍为麻烦一点儿,可以用find函数查找的方式来实现,比如下面的公式计算了一个文本里的数字出现位置的总和:
大海Power
2021/08/30
8200
Excel 公式、图表以及单元格的操作
SUM 函数将值相加,可以将单个值、单元格引用或是区域相加,或者将三者的组合相加。例如: =SUM(A1:A3)将单元格 A1:A3 中的值加在一起,=SUM(A1:A3,B1:B3)将单元格 A1:A3 以及单元格 B1:B3 中的值加在一起。语法:SUM(number1,[number2],…),number1(必需):要相加的第一个数字。该数字可以是 4 之类的数字,A1 之类的单元格引用或 A1:A3 之类的单元格范围。number2(可选):要相加的第二个数字。可以按照这种方式最多指定 255 个数字。下面我们来看怎么通过 Python 使用 SUM 函数。代码如下:
芯动大师
2022/11/15
1.3K0
Excel 公式、图表以及单元格的操作
Excel技巧:使用上方单元格的值填充空单元格
有时候,工作表列中有许多空单元格,而不是在每行都重复相同的内容,这样可以使报表更容易阅读,然而也会导致一些问题,例如不方便排序或筛选数据。
fanjy
2022/04/13
3.4K0
Excel技巧:使用上方单元格的值填充空单元格
Excel公式技巧98:总计单元格文本中的数字
有些需求看起来很特别,但有时候确实会发生,而这往往是由于数据不规范造成的,例如下图1所示的示例。
fanjy
2021/07/12
1.3K0
Excel公式技巧98:总计单元格文本中的数字
Excel公式技巧75:查清与公式相关的单元格
在使用Excel时,我们肯定会使用公式。这些公式要么会引用其他的单元格,要么会被其他单元格引用。下面我们先看看这两种情况,如下图1所示。
fanjy
2021/01/06
1.7K0
Excel公式技巧27: 在条件格式中使用公式来突出显示单元格
条件格式与公式相配合,往往能够发挥很大的威力,其中之一就是用来突出显示单元格。如下图1所示,在“新建格式规则”对话框中:
fanjy
2020/04/14
3.3K0
Excel公式技巧27: 在条件格式中使用公式来突出显示单元格
Excel公式技巧95:统计文本单元格的神秘公式
需要弄明白的是,空字符串与空单元格不同。空单元格中没有任何内容,空字符串是不显示任何结果的公式的结果。这通常是通过使用两个双引号来实现的,它们之间没有任何内容:
fanjy
2021/07/12
1.6K0
Excel公式技巧95:统计文本单元格的神秘公式
Excel公式技巧:颠倒单元格区域/数组
=SUMPRODUCT(A1:G1,N(OFFSET(A2:G2,0,7-COLUMN(A2:G2),1,1)))
fanjy
2023/02/14
9070
Excel公式技巧:颠倒单元格区域/数组
Excel小技巧88:保护公式单元格
Excel中的“保护工作表”功能使用起来有点奇怪,似乎有点烧脑。但是,你按照下面介绍的步骤,可以快速保护工作表中的公式单元格。
fanjy
2021/07/12
8320
Excel小技巧88:保护公式单元格
点击加载更多

相似问题

Excel:当输入单元格为空时,公式单元格为空。

22

如何批量修复公式单元格?Excel

11

如何检测包含公式的单元格是否为空?

237

Excel公式包含单元格名称

20

Excel -如果一个单元格为空,则显示为空,否则显示公式,除非

10
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文