gpt4 book ai didi

c - 这段代码如何打印用户输入的最后一个词?

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

这段小代码接受用户输入并返回用户输入的最后一个单词。

我不太明白这两行代码是如何工作的

有人可以解释为什么或如何 printf( &last_word[i]); 当我在位置 0 时打印用户输入的句子的最后一个单词。

该程序的目的是打印用户输入的最后一个字,但我不明白那些代码行,如果我在这两行上更改某些内容,代码将停止工作并且它不会返回输入的最后一个字用户。

#include <stdio.h>

int main(){
int i = 0;
char *last_word;
char str[800];
printf("enter:");
fgets(str,100,stdin);

while (str[i] != '\0') {
if (str[i] == ' ' && str[i + 1] > 32)
last_word = &str[i + 1];
i++;
}

/*------------------------these next lines of code-----------------------*/
/*-----> i = 0;
/*-----> printf( &last_word[i]);


return 0;
}

最佳答案

神圣的未定义行为 bat 侠。

while 循环将空格字符后的下一个字符的地址填充到 last_word 中;因此,如果有任何空格字符,它指向最后一个字符。

i = 0 因此 &last_word[i]last_word 相同。所以它使用最后一个单词作为 printf 格式字符串。

但这与最后一句话不同。试试这个输入:“%n%n%n%n%n%n%n%n”。再见。

printf 的第一个参数应该几乎总是一个常量。你想要 printf("%s", last_word); 事实上,让我们这样说;不向 printf 和 friend 传递常量格式字符串的唯一原因是您的标准库太旧,无法支持动态宽度的 %*d

关于c - 这段代码如何打印用户输入的最后一个词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57939716/

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