Liu_Yuchen_ 2022-10-05 10:30 采纳率: 50%
浏览 25
已结题

%s的输出机制是什么?是一个字符,一个字符串,还是一个单词??

%s到底输出的是一个字符,一个字符串,还是一个单词??


#include <stdio.h>
#include <string.h>
 
char str[81];
 
int main()
{
    int i, k;
    char *p;
    gets(str);
    k = strlen(str);
    printf("%d\n",k);
    
    printf("%d\n",str);
    p = str + k;
    printf("%d\n",p);
    printf("%s\n ",p);
    while (1)
    {
        if ( p == str )
        {
            printf("%s\n", p);
            break;
        }
        if (*p == ' ' && *(p+1) != ' ')
        {
            *p = '\0';
            printf("%s ", p+1);
        }
        p--;
    }
    return 0;
}

这是一个输入一句话,输出反过来说的一段代码。如:
输入:What is your name
输出:name your is What

while语句里的第二个if是判断p有没有减小到一个完整的单词的,但是他输出%s的p+1之后输出了一整个单词,在例句中就相当于输出了name。为啥?

是不是%s会输出p+1及之后位置上所有的字符,并在\0处停止?如果是这样的话,就能解释的通了。
求学长学姐们讲解!

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-05 10:34
    关注

    %s作为输出,就是输出连续的字符,直到遇到第一个字符串结束符为止
    %s作为输入,就是遇到空格符或换行符为止的所有字符。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月13日
  • 已采纳回答 10月5日
  • 创建了问题 10月5日