1. 程式人生 > >複製一段字串作為程式輸入的BUG

複製一段字串作為程式輸入的BUG

有時候我們會通過從其他地方複製一段字串(裡面有多行語句)作為程式的輸入,這時換行符會出出現一些問題。

比如下面的程式:

#include <stdio.h>
#include <string.h>

#define N 100

int main()
{
	char input_1[N] = {0};
	char input_2[N] = {0};

	printf("請輸入:\n");
	scanf("%s", input_1);

	printf("字串1為:\n");
	printf("%s\n", input_1);


	printf("請輸入:\n");
	scanf("%s", input_2);

	printf("字串2為:\n");
	printf("%s\n", input_2);
}

當我輸入下面一段字串的時候:

aaaaa
bbb

輸出:

請輸入:
aaaaa
字串1為:
aaaaa
請輸入:
bbb

再輸入:

cc

輸出:

請輸入:
aaaaa
字串1為:
aaaaa
請輸入:
bbbcc
字串2為:
bbbcc

原因:

因為換行符作為程式的結束輸入,而多餘的輸入,會作為下一次輸入。