c++在输入时连续输入一长串字符,以回车结束,中间有空格,以空格为分界,把这些分成许多个子串,存在一个数组里
时间: 2023-05-18 21:06:19 浏览: 56
可以使用 C 语言中的字符串处理函数 strtok() 来实现这个功能。具体代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[1000];
char *token;
char *delim = " ";
char substrings[100][100];
// 读入一行字符串
fgets(str, 1000, stdin);
// 使用 strtok() 函数分割字符串
token = strtok(str, delim);
int i = 0;
while (token != NULL) {
strcpy(substrings[i], token);
token = strtok(NULL, delim);
i++;
}
// 输出分割后的子串
for (int j = 0; j < i; j++) {
printf("%s\n", substrings[j]);
}
return 0;
}
```
这个程序会读入一行字符串,然后使用 strtok() 函数将其分割成多个子串,存储在一个二维字符数组中。每个子串之间以空格为分隔符。最后,程序会输出所有分割后的子串。
相关问题
c++在输入时连续输入一长串字符,以回车结束,中间有空格,以空格为分界,把这些分成许多个子串,分别存在一个string数组里
好的,这个问题可以回答。您可以使用C语言中的字符串处理函数strtok()来实现这个功能。具体的代码如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 假设输入的字符串长度不超过1000
int main() {
char str[MAX_LEN];
char *p;
char *delim = " "; // 以空格为分隔符
char substrings[MAX_LEN][MAX_LEN]; // 存储子串的二维字符数组
int count = 0; // 子串的个数
fgets(str, MAX_LEN, stdin); // 从标准输入读入字符串
p = strtok(str, delim); // 使用strtok()函数分割字符串
while (p != NULL) {
strcpy(substrings[count], p); // 将分割得到的子串复制到二维字符数组中
count++;
p = strtok(NULL, delim);
}
// 输出每个子串
for (int i = 0; i < count; i++) {
printf("%s\n", substrings[i]);
}
return 0;
}
```
这段代码会从标准输入读入一个字符串,然后使用strtok()函数将其分割成多个子串,并将这些子串存储在一个二维字符数组中。最后,程序会输出每个子串。
c++输入一个字符串以及一个子串,输出子串在字符串中的出现次
下面是一个简单的 C 代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100], substr[100];
int i, j, count = 0;
printf("请输入字符串:");
gets(str);
printf("请输入子串:");
gets(substr);
for (i = 0; i <= strlen(str) - strlen(substr); i++) {
for (j = 0; j < strlen(substr); j++) {
if (str[i + j] != substr[j]) {
break;
}
}
if (j == strlen(substr)) {
count++;
}
}
printf("子串在字符串中出现的次数:%d\n", count);
return 0;
}
```
这个程序先从用户输入中读取字符串和子串,然后采用双重循环的方式遍历字符串和子串,找到所有可能的匹配位置并记录匹配次数。注意,这里使用的 `gets` 函数不够安全,实际应用中应该使用更为安全的输入函数。