c语言怎么用scanf输入字符串

使用scanf输入字符串的基本格式

在C语言中,要使用scanf输入字符串可以使用以下的基本格式:

scanf("%s", str);

其中,%s表示读入一个字符串,str则是存储这个字符串的变量名。需要注意的是,在输入字符串的时候,scanf会自动将字符串以空格为分隔符,读取到空格或者回车符为止,所以如果输入的字符串中有空格或者需要输入多个字符串,则需要使用其他的方法进行处理。

输入带空格的字符串

方法一:使用fgets()

如果要输入带空格的字符串,可以使用类似以下的代码:

char str[100];

fgets(str, 100, stdin);

其中,fgets()函数可以输入一整行字符串,并把它存储到指定的字符数组中。需要注意的是,由于fgets会连带输入的回车符一起保存,因此需要将回车符去掉:

char str[100];

fgets(str, 100, stdin);

int len = strlen(str);

if(str[len-1] == '\n') {

str[len-1] = '\0';

}

这段代码中,首先使用了strlen()函数获得了输入字符串的长度,判断了其最后一位是否为回车符,如果是的话则将其替换成字符'\0',即空字符。

方法二:使用scanf的尖括号

另一种方法是使用scanf的尖括号来输入带空格的字符串,例如:

char str[100];

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

其中,%[^\n]表示读取任意字符直到遇到换行符(\n)为止,即可以输入带空格的字符串。但是需要注意的是,scanf的尖括号有可能会导致缓冲区溢出问题,因此需要将输入字符数限制在指定的范围内:

char str[100];

scanf("%99[^\n]", str);

输入多个字符串

方法一:使用scanf加循环

如果要输入多个字符串,则可以使用以下的方法:

char str[100];

for(int i=0; i<n; i++) {

scanf("%s", str);

// do something with str

}

其中,n表示需要输入的字符串的个数,通过循环来利用scanf输入多个字符串。

方法二:使用多个scanf语句

另一种方法是使用多个scanf语句来分别输入每个字符串:

char str1[100], str2[100];

scanf("%s", str1);

scanf("%s", str2);

// do something with str1 and str2

使用scanf输入其他类型

C语言中,除了字符串之外还有许多其他类型,包括以下几种:

整型(int)

浮点型(float/double)

字符型(char)

其中,scanf的格式化字符串中需要加上对应的占位符来表示不同的类型:

scanf("%d", &n); // 读取整型

scanf("%f", &x); // 读取浮点型

scanf("%c", &c); // 读取字符型

需要注意的是,对于整型、浮点型等类型,需要在scanf参数中加上&符号,来表示对应变量的内存地址。对于字符型,由于输入的字符可能是空格、回车符等,因此建议加上空格来跳过这些不需要的字符:

scanf(" %c", &c);

结语

本文主要介绍了在C语言中使用scanf输入字符串的方法,包括输入带空格的字符串、输入多个字符串以及输入其他类型的变量,同时对一些需要注意的问题也进行了说明。输入字符串是C语言中常用的操作之一,掌握了这些方法可以大大提升代码的效率和可读性。

后端开发标签