C 该代码如何打印用户输入的最后一个单词?
这段代码接受用户输入并返回用户输入的最后一个单词。 我不太明白这两行代码是如何工作的 有人能解释为什么或如何打印吗代码>当我处于位置0时,打印用户输入的句子的最后一个单词 该程序的目的是打印用户输入的最后一个字,但我不理解这些代码行,如果我在这两行上更改了某些内容,代码将停止工作,并且不会返回用户输入的最后一个字C 该代码如何打印用户输入的最后一个单词?,c,string,info,C,String,Info,这段代码接受用户输入并返回用户输入的最后一个单词。 我不太明白这两行代码是如何工作的 有人能解释为什么或如何打印吗当我处于位置0时,打印用户输入的句子的最后一个单词 该程序的目的是打印用户输入的最后一个字,但我不理解这些代码行,如果我在这两行上更改了某些内容,代码将停止工作,并且不会返回用户输入的最后一个字 #include <stdio.h> int main(){ int i = 0; char *last_word; char str[800]; printf("en
#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;
}
#包括
int main(){
int i=0;
char*最后一个单词;
char-str[800];
printf(“输入:”);
fgets(str,100,stdin);
而(str[i]!='\0'){
如果(str[i]=''&&str[i+1]>32)
最后一个单词=&str[i+1];
i++;
}
/*------------------------下面这些代码行-----------------------*/
/*----->i=0;
/*----->printf(&last_word[i]);
返回0;
}
神圣的未定义行为蝙蝠侠
while循环将下一个字符的地址通过空格字符填充到最后一个单词中
;因此,如果有任何空格字符,它会指向最后一个字符的后面
i=0
因此和last\u word[i]
与last\u word
相同。因此,它使用最后一个单词作为printf
格式字符串
但这和最后一句话不一样。尝试此输入:“%n%n%n%n%n%n%n%n%n”。再见
printf
的第一个参数几乎总是一个常量。您需要printf(“%s”,最后一个单词)事实上,让我们这样说;永远不要将常量格式字符串传递给printf
和朋友的唯一原因是,您的标准库太旧,无法支持%*d
动态宽度。确保始终使用字符串文字作为printf
的第一个参数。哦,这是正确的,感谢您捕捉到了这一点。如果str[]
缺少[]
@chux这是什么意思?@JL2210 Oops,typp:code如果str[]
缺少'
as,代码将失败。最后一个单词
稍后使用,但从未设置。