gpt4 book ai didi

c - 数组中的字符串切片打印两个字符?

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:50 24 4
gpt4 key购买 nike

下面的 C 程序打印 16 个单词字符串的第一个和最后一个字符:

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

void main()
{
char first, last;
char *str = "abcdefghijklmnop";
first = str[0];
last = str[15];
printf("%s", &first);
printf("%s", &last);
}

我正在寻找的输出是 a 和 p。但是,当我运行这段代码时,我得到了输出:

apa

我做错了什么?

最佳答案

您缺少对指针的理解。当您将字符分配给 firstlast 时,这些字符实际上将被复制到 firstlast。由于 firstlast 是不同的变量,因此它们的地址与 char *str 指针无关。此外, printf("%s", &first); (与 last 相同)调用未定义的行为,因为 printf 需要一个以 0 结尾的字符串,但你只传递一个字符,之后没有零终止符。

你可以做的是使用指针:

char *first = str + 0;
char *last = str + 15;
printf("%s %s", first, last);

这将打印abcdefghijklmnop p

或者只打印两个字符:

char first = str[0];
char last = str[15];
printf("%c %c", first, last);

这将打印a p

关于c - 数组中的字符串切片打印两个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12507035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com