2021-05-23

scanf函数输入字符串,C语言scanf函数输入字符串详解
除了在定义字符数组时初始化外,还可以通过scanf从键盘输入字符串。下面写一个程序:

# include <stdio.h>

int main(void)

{
char str[20]; //str是string的缩写, 即字符串
printf("输入字符串:");
scanf("%s", str); 
/* 输入参数是已经定义好的“字符数组名”, 
   不用加&,C语言中数组名就代表该数组的起始地址 */
printf("输出:%s\n", str);
return 0;
}


输入字符串:我爱你
输出:我爱你

  • 用 scanf 给字符数组赋值不同于对数值型数组赋值。前面讲过,给数值型数组赋值时只能用 for 循环一个一个地赋值,不能整体赋值。而给字符数组赋值时可以直接赋值,不需要使用循环。此外从键盘输入后,系统会自动在最后添加结束标志符 '\0'。但是用 scanf 输入字符串时有一个地方需要注意:如果输入的字符串中带空格,比如“i love you”,那么就会有一个问题。我们将上面程序运行时输入的字符串改一下:

输入字符串:I LOVE YOU
输出:I

输入的是“I LOVE YOU”,而输出的只有“I”。原因是系统将空格作为输入字符串之间的分隔符。也就是说,只要一“敲”空格,系统就认为当前的字符串已经结束,接下来输入的是下一个字符串,所以只会将空格之前的字符串存储到定义好的字符数组中。

  • 读取一行输入,然后把输入的内容倒序打印出来,可以把输入存储在char类型的数组中,假设每行字符不超过255个,回忆一下,根据%C转换说明符,scanf()函数一次只能从输入中读取一个字符,而且在用户按下enter键时函数才会生成一个换行字符'\n'。
#include<stdio.h>
int main(){
    char ch[256];
    int i=0;
    printf("Enter the char in  line: ");
    do{
       scanf("%c",&ch[i]);
    }while(ch[i] != '\n' && ++i);
    /* 循环读取用户输入的字符,并保存在数组中,直到用户输入回车符
     * 循环未检查输入字符的数量,特定情况下可能会产生溢出 */
     printf("The reverse char of the array: ");
     for(i--; i>=0; i--){
        /* 原下标i为最后一个字符的下标,初始化时i-的目的是删除最后那个换行符 */
        printf("%c",ch[i]);
     }
     printf("\nDone");
     return 0;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值