字符串的输入和输出
一:字符串输入
-
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.
-
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()不会在待输出字符串末尾添加一个换行符
-
gets_s()函数
(1).get_s()只从标准输入中读取数据,所以不需要第三个参数。
(2).如果get_s()读到换行符,会丢弃它而不是存储它。
二:字符串输出
-
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()从这里开始输出。
-
打印一个字符串,并统计打印的字符数
int put2(const char *string)
{
int count =0;
while(*string){
putchar(*string++);
count++;
}
putchar('\n');//不统计换行符
return (count);
}
标签:函数,puts,输入输出,fgets,words,字符串,换行符,string From: https://www.cnblogs.com/ninnne/p/17120160.html