[使用指针时检查字符串中的字符

问题描述 投票:0回答:1

我想检查字符串中的每个字符。该字符串存储在指针中。由于某种原因,我不能,它只能让我得到整个字符串。这是我的代码:

int main() {
  char *s=(char*)calloc(30,sizeof(char));
  s="hello";
  printf("%s",&s[2]);
  return 0;
 }

此代码打印“ llo”,我只需要1个字符,例如“ l”或“ o”。有人知道我能做到吗?ty

c string pointers
1个回答
2
投票

使用%c转换说明符打印单个char acter而不是%s打印string

而且calloc()的内存分配也没有用,因为指向char s的指针是在一个语句之后由字符串文字"hello"的第一个元素的地址分配的。

#include <stdio.h>

int main (void) 
{
    const char *s = "hello";
    printf("%c", s[2]);
    return 0;
}

输出:

l

旁注:

  • 使用const限定词可防止对导致undefined behavior的字符串文字进行无意的写尝试。

如果要分配内存并通过字符串文字"hello"分配/初始化分配的内存,请使用strcpy()(标题string.h):

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main (void) 
{
    char *s = calloc(30, sizeof(*s));
    strcpy(s, "hello");
    printf("%c", s[2]);
    return 0;
}

输出:

l

旁注:

“字符串存储在指针中。”

这样的事情是不可能的。指针指向字符串的第一个元素(文字)。指针不存储字符串。

© www.soinside.com 2019 - 2024. All rights reserved.