L1-032 Left-pad

输入格式:

输入在第一行给出一个正整数N≤104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。

输出格式:

在一行中输出结果字符串。

输入样例1:

15 _
I love GPLT

输出样例1:

____I love GPLT

输入样例2:

4 *
this is a sample for cut

输出样例2:

 cut
#include<stdio.h>   // 引入标准输入输出库
#include<string.h>  // 引入字符串处理库,提供strlen函数等

int main() {  
    char a[100000], b;  // 定义字符数组a用于存储原始字符串,字符b用于存储填充字符
    int n, i;  // 定义整数n表示目标字符串的长度,i为循环计数器

    // 读取输入
    scanf("%d %c", &n, &b);  // 读取目标长度n和填充字符b
    getchar();  // 读取并丢弃输入中的换行符,避免影响下一次输入
    scanf("%[^\n]", a);  // 读取原始字符串a(直到遇到换行符为止)

    // 如果原始字符串长度大于目标长度
    if (strlen(a) > n) {
        // 从原始字符串的末尾截取最后n个字符并输出
        for (i = strlen(a) - n; i < strlen(a); i++)  
            printf("%c", a[i]);  // 输出从原始字符串中截取的部分
    } else {  
        // 如果原始字符串的长度小于目标长度
        // 先输出填充字符b,直到达到目标长度
        for (i = 0; i < n - strlen(a); i++)  
            printf("%c", b);  // 输出填充字符b

        // 然后输出原始字符串a
        for (i = 0; i < strlen(a); i++)  
            printf("%c", a[i]);  // 输出原始字符串a的内容
    }

    return 0;  // 程序结束
}

scanf("%[^\n]", a) 是 C 语言中的一种输入格式化方式,用于读取一行文本(包括空格),直到遇到换行符 \n 为止。

解释:

  • %[^\n]:这个格式化控制符的作用是读取所有字符,直到遇到指定的字符(在这个例子中是换行符 \n)为止。
  • [ 表示开始读取一个字符集。
  • ^ 表示排除符号,意思是“读取所有字符,直到遇到下一个指定的字符(此处是换行符 \n)为止”。
  • \n 是换行符,它表示结束读取的标志。

因此,scanf("%[^\n]", a); 会读取用户输入的一整行文本(包括空格),直到遇到换行符,并将这些字符存储到字符数组 a 中。

为什么使用 getchar()

在这段代码中,getchar() 被用来读取并丢弃输入中的换行符。原因是 scanf("%d %c", &n, &b); 读取完 nb 后会停留在输入缓冲区的换行符上,而 scanf("%[^\n]", a); 会直接从换行符开始读取,导致没有输入内容被读入。使用 getchar() 读取并丢弃这个换行符,可以确保后续的 scanf("%[^\n]", a); 能够正常读取用户输入的整行文本。

总结:

  • %[^\n] 用于读取一整行文本,直到遇到换行符。
  • getchar() 是为了丢弃输入缓冲区中的换行符,确保后续的输入操作不受影响。
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-10 15:24
高考前一晚在OPPO手机上设置了早上5:30的闹钟,然而闹钟并未按时响起。直到妈妈做好早餐后,在6:27打开手机才发现闹钟未触发,“气得早上饭都没吃”。资本家你赢了
永不遗忘:我来解释一下 :Oppo 手机晚上两点会自动进行系统更新,这个系统更新会重置掉所有设置好的闹钟,而且他也不会告诉你,而且只有 Oppo 会这样,华为苹果小米三星都不会
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务