这段代码如何打印用户输入的最后一个词?
How does this code print the last word the user inputs?
这段小代码接受用户输入,return是用户输入的最后一个词。
我不太明白这两行代码是如何工作的
有人可以解释为什么或如何 printf( &last_word[i]);
当我在位置 0 时打印用户输入的句子的最后一个词。
该程序的目的是打印用户输入的最后一个字,但我不明白那几行代码,如果我更改那两行的某些内容,代码将停止工作并且不会 return 用户输入的最后一个词。
#include <stdio.h>
int main(){
int i = 0;
char *last_word;
char str[800];
printf("enter:");
fgets(str,100,stdin);
while (str[i] != '[=10=]') {
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;
}
神圣的未定义行为蝙蝠侠。
while 循环将 space 字符后的下一个字符的地址填充到 last_word
中;因此,如果有任何 space 个字符,它指向最后一个字符。
i = 0
因此 &last_word[i]
与 last_word
相同。所以它使用最后一个词作为 printf
格式字符串。
但这与最后一个字不一样。试试这个输入:“%n%n%n%n%n%n%n%n”。再见。
printf
的第一个参数应该几乎总是一个常量。你要 printf("%s", last_word);
其实我们这么说吧;不向 printf
和朋友传递常量格式字符串的唯一原因是您的标准库太旧,无法支持 %*d
动态宽度。
这段小代码接受用户输入,return是用户输入的最后一个词。
我不太明白这两行代码是如何工作的
有人可以解释为什么或如何 printf( &last_word[i]);
当我在位置 0 时打印用户输入的句子的最后一个词。
该程序的目的是打印用户输入的最后一个字,但我不明白那几行代码,如果我更改那两行的某些内容,代码将停止工作并且不会 return 用户输入的最后一个词。
#include <stdio.h>
int main(){
int i = 0;
char *last_word;
char str[800];
printf("enter:");
fgets(str,100,stdin);
while (str[i] != '[=10=]') {
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;
}
神圣的未定义行为蝙蝠侠。
while 循环将 space 字符后的下一个字符的地址填充到 last_word
中;因此,如果有任何 space 个字符,它指向最后一个字符。
i = 0
因此 &last_word[i]
与 last_word
相同。所以它使用最后一个词作为 printf
格式字符串。
但这与最后一个字不一样。试试这个输入:“%n%n%n%n%n%n%n%n”。再见。
printf
的第一个参数应该几乎总是一个常量。你要 printf("%s", last_word);
其实我们这么说吧;不向 printf
和朋友传递常量格式字符串的唯一原因是您的标准库太旧,无法支持 %*d
动态宽度。