我想检查字符串中的每个字符。该字符串存储在指针中。由于某种原因,我不能,它只能让我得到整个字符串。这是我的代码:
int main() {
char *s=(char*)calloc(30,sizeof(char));
s="hello";
printf("%s",&s[2]);
return 0;
}
此代码打印“ llo”,我只需要1个字符,例如“ l”或“ o”。有人知道我能做到吗?ty
使用%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
旁注:
“字符串存储在指针中。”
这样的事情是不可能的。指针指向字符串的第一个元素(文字)。指针不存储字符串。