c语言输入一行字符串,它被连续的数个空格分成两个子串,如何将这两个子串分别复制到字符串a,b中
时间: 2024-10-09 08:01:59 浏览: 48
C语言根据协议分割获取字符串单元的实现代码
在C语言中,如果你想从一行输入的字符串中通过连续的空格将其分割成两个子串,并分别存储到`a`和`b`两个字符数组中,你可以使用`fgets`函数读取一行数据,然后利用`strtok`函数处理空格分隔。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main() {
char input[MAX_LENGTH], a[MAX_LENGTH / 2], b[MAX_LENGTH / 2];
// 读取一行字符串
fgets(input, sizeof(input), stdin);
// 去除末尾的换行符
input[strcspn(input, "\n")] = '\0';
// 使用strtok分割字符串,第一个参数是要处理的字符串,第二个参数用于指定位分隔符(这里是空格)
char *token = strtok(input, " ");
// 处理第一个子串
strncpy(a, token, sizeof(a) - 1); // 注意这里不包括结束符'\0'
a[sizeof(a) - 1] = '\0'; // 确保a数组结尾有'\0'
// 再次调用strtok获取下一个子串
token = strtok(NULL, " ");
// 如果还有子串,处理第二个子串
if (token != NULL) {
strncpy(b, token, sizeof(b) - 1);
b[sizeof(b) - 1] = '\0'; // 同上,添加结束符
} else {
b[0] = '\0'; // 如果只有一个子串,那么b就为空字符串
}
// 打印结果
printf("a: %s\n", a);
printf("b: %s\n", b);
return 0;
}
```
在这个例子中,如果输入的字符串中有连续的空格,`strtok`会找到第一个非空格字符作为新的开始,所以它能有效地分离出两个部分。
阅读全文