参考:

https://www.cnblogs.com/xyl-share-happy/archive/2012/08/28/2660873.html

https://blog.csdn.net/jeffasd/article/details/80705487

 

 

1,scanf("%d", &n)

  ① 以回车作为输出的结束标志。

  ② 返回值为 EOF,可以按下下述按钮结束循环,

    ctrl+z ->回车 -> ctrl+z -> 回车 ->ctrl+z ->回车

 

2,scanf("%s", s)

  ① 以空白字符作为输出的结束标志,该空白字符会被丢弃,但要回车才能进入循环体内。

  ② 返回值为 EOF,可以按下下述按钮结束循环,

    ctrl+z ->回车 -> ctrl+z -> 回车 ->ctrl+z ->回车

 

3,scanf(“%[^\n]”, str);    

  ① 以回车作为输出的结束标志,该空白字符并不会被丢弃。

    所以要想办法读取掉,不然回车一直无法被读取,也不会被丢弃,一直在循环。

  ② 返回值为 EOF,可以按下下述按钮结束循环,

    ctrl+z ->回车 -> ctrl+z -> 回车

 

4,scanf("%[^\n]%*c", str);  

  在 3 的基础上,利用 %*c 读入回车。其它都与 3 一样。

  可以利用这个实现一次循环读取两个以回车分隔开的字符串。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
char s1[N];
char s2[N];
int main(void)
{
	while (scanf("%[^\n]%*c%[^\n]%*c", s1, s2) != EOF)
	{
		for (int i = 0; i < strlen(s1); i++)
			printf("%c", s1[i]);
		puts("");
		for (int i = 0; i < strlen(s2); i++)
			printf("%c", s2[i]);
		puts("");
	}
	system("pause");
	return 0;
}

 

 

========== ======== ======= ====== ====== ===== ==== === == =

 

相关文章:

  • 2022-12-23
  • 2021-06-22
  • 2022-12-23
  • 2022-12-23
  • 2021-09-26
  • 2021-07-26
  • 2022-01-13
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-27
  • 2022-12-23
  • 2021-07-12
相关资源
相似解决方案