天天看点

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”, 正确

c