C语言 scanf 输入带空格的内容

C语言 scanf 输入带空格的内容

1、 使用 scanf 和 %[^\n]该格式说明符会读取整行输入,直到遇到换行符(\n),包括空格。

#include

int main() {

char input[100]; // 用于存储输入的字符数组

printf("请输入一段带空格的字符串: ");

scanf("%[^\n]", input); // 读取到换行符之前的所有内容

printf("你输入的是: %s\n", input);

return 0;

}

2、清理输入缓冲区有时候需要清理输入缓冲区,以避免残留的换行符导致问题。在读取输入前,可以使用以下代码清理缓冲区,

#include

void clear_input_buffer() {

int ch;

while ((ch = getchar()) != '\n' && ch != EOF);

}

int main() {

int number;

printf("Enter a number: ");

if (scanf("%d", &number) != 1) {

printf("Invalid input! Clearing buffer...\n");

clear_input_buffer();

} else {

printf("You entered: %d\n", number);

}

printf("Enter another input: ");

clear_input_buffer(); // 确保缓冲区已清空

char str[50];

fgets(str, sizeof(str), stdin); // 使用 fgets 读取剩余输入

printf("You entered: %s", str);

return 0;

}

3、使用 fgets 替代 scanf相比于 scanf,fgets 通常是更好的选择,特别是当需要处理带空格的输入时。fgets 还能更好地处理换行符和缓冲区溢出。

#include

int main() {

char input[100]; // 用于存储输入的字符数组

printf("请输入一段带空格的字符串: ");

fgets(input, sizeof(input), stdin); // 读取整行输入

printf("你输入的是: %s", input);

return 0;

}4、使用占位符跳过空白字符如果将 scanf 与 %s 结合使用,可以在 %s 前添加一个空格来忽略前导空白字符。

#include

int main() {

char input1[50], input2[50];

printf("请输入两个用空格分隔的字符串:\n");

scanf(" %s %s", input1, input2); // 在 %s 前加空格跳过前导空白

printf("第一个字符串: %s\n", input1);

printf("第二个字符串: %s\n", input2);

return 0;

}5、直接使用 getline (POSIX 标准)

如果使用的是支持 POSIX 标准的编译器,可以直接使用 getline ,

#include

#include

int main() {

char *input = NULL;

size_t len = 0;

printf("请输入带空格的内容:\n");

getline(&input, &len, stdin); // 动态分配内存读取一行

printf("您输入的是:%s", input);

free(input); // 用完后释放内存

return 0;

}

相关尊享内容

博博乐棋牌下载-博博乐棋牌免费下载安装
正规beat365旧版

博博乐棋牌下载-博博乐棋牌免费下载安装

📅 08-02 👑 428
《魔兽世界》怨恨哪里出
365bet投注官网

《魔兽世界》怨恨哪里出

📅 08-14 👑 121
特种车辆包括哪些?
365bet中国大陆网址

特种车辆包括哪些?

📅 10-18 👑 51
格林童话好句摘抄
正规beat365旧版

格林童话好句摘抄

📅 08-21 👑 682