字符串的输入输出函数

字符串的输入和输出

一:字符串输入

  1. gets()函数:用来读取整行输入,直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符的末尾添加一个空字符使其成为一个C字符串。它经常与puts()函数配对使用,该函数用于显示字符串,并在末尾添加换行符。

#include<stdio.h>
#define STLEN 81 
int main(void)
{
    char words[STLEN];
    
    puts("Enter a  string, please.");
    gets(words);//典型用法
    printf("Your string twice:\n");
    printf("%s\n",words);
    puts(words);
    puts("Done."); 
    return 0; 
    
}

整行输入(除了换行符)都被储存在words中,puts(words) 和 printf("%s\n",words)的效果

运行结果:

Enter a  string, please.
you are so perfect.best wish for you
Your string twice:
you are so perfect.best wish for you
you are so perfect.best wish for you
Done.
​

 

  1. fgets()函数

    (1). fgets()函数通过第二个参数限制读入的字符串来解决溢出的问题。

(2).fgets()函数的第二个参数指明了读入字符的最大数量。如果该参数的值为n,那么fgets()读入n-1个字符,或者读到遇到的第一个换行符为止

(3).如果读到一个换行符,它会把它存储在字符串中。这点与gets()不同,gets()会丢弃换行符

(4).fgets()函数的第三个参数指明要读入的文件,以stdin作为参数

#include<stdio.h>
#define STLEN 14
int main(void)
{
    char words[STLEN];
    
    puts("Enter a  string, please.");
    fgets(words,STLEN,stdin);
    printf("Your string twice(puts(),then fputs()):\n");
    puts(words);
    fputs(words,stdout);
    puts("Enter another  string, please.");
    fgets(words,STLEN,stdin);
    printf("Your string twice(puts(),then fputs()):\n");
    puts(words);
    fputs(words,stdout);
    puts("Done."); 
    
    return 0; 
    
}

 

运行结果:

Enter a  string, please.
apple pie
Your string twice(puts(),then fputs()):
apple pie
​
apple pie
Enter another  string, please.
strawberry shortcake
Your string twice(puts(),then fputs()):
strawberry sh
strawberry shDone.
​

fgets()只读入了13个字符,并把strawberry sh\0 储存在数组中。并且fputs()不会在待输出字符串末尾添加一个换行符

  1. gets_s()函数

(1).get_s()只从标准输入中读取数据,所以不需要第三个参数。

(2).如果get_s()读到换行符,会丢弃它而不是存储它。

 

二:字符串输出

  1. puts()函数

puts()函数只需把字符串的地址作为参数传递给它即可。

#include<stdio.h>
#define DEF "I am a #defined string." 
int main(void)
{
    char str1[80]="An array was initialized to me.";
    const char *str2="A pointer was initialized to me.";
    puts("I'm an argument to puts().");
    puts(DEF);
    puts(str1);
    puts(str2);
    puts(&str1[5]);
    puts(str2+4);
    
    return 0; 
    
}

 

运行结果:

I'm an argument to puts().
I am a #defined string.
An array was initialized to me.
A pointer was initialized to me.
ray was initialized to me.
inter was initialized to me.
​

puts()在显示其字符串时,会自动在其末尾添加一个换行符。

在puts(&str1[5]);中,&str1[5]表示str数组的第六个元素,puts()从该元素开始输出。

在puts(str2+4);中,str2+4指向储存“pointer”中的i的存储单元,puts()从这里开始输出。

  1. 打印一个字符串,并统计打印的字符数

int put2(const char *string)
{
    int count =0;
    while(*string){
        putchar(*string++);
        count++;
    }
    putchar('\n');//不统计换行符 
    
    return (count);
}
 

 

posted @ 2023-02-14 16:54  Ninnne  阅读(277)  评论(0)    收藏  举报