1. 程式人生 > >C語言從控制檯輸入一個字串,然後賦值給變數

C語言從控制檯輸入一個字串,然後賦值給變數

一、常規程式碼:

char name[5];
printf("Name: ");
scanf("%s", name);
printf("Name = %s\n", name);

測試:
1、輸入“abc”, 輸出“abc”,正確
2、輸入“ab c”, 輸出“ab”, 出錯,原因是scanf碰到空格就結束了
3、輸入“012345”,沒有輸出直接出錯了,原因是輸入的字串長度大於5

二、使用gets函式

char name[5];
printf("Name: ");
gets(name);
printf("Name = %s\n", name);

測試:
1、輸入“abc”, 輸出“abc”,正確
2、輸入“ab c”, 輸出“ab c”, 正確
3、輸入“012345”,沒有輸出直接出錯了,原因是輸入的字串長度大於5

三、使用getchar自定義一個函式

#include <stdio.h>
#include <stdlib.h>

#define N 5

void GetString(char *p, int p_len)
{
	char c;
	int i = 0;
	while((c = getchar()) != '\n') {
		if(i < p_len) {
			p[i] = c;
			i++;
		} else {
			break;
		}
	}
	p[i] = '\0';
}

int main(int argc, char *argv[])
{
	char name[N];
	printf("Name: ");
	GetString(name, N);
	printf("Name = %s\n", name);
	
	return 0;
}

測試:
1、輸入“abc”, 輸出“abc”,正確
2、輸入“ab c”, 輸出“ab c”, 正確
3、輸入“012345”,輸出“01234”, 正確