<分区>
目标是通过提取由空格分隔的单词,从输入的字符串中创建子字符串。
子串本身必须是变量。
听起来很简单,但困难在于您只能使用 strcpy、strcmp、strlen、strcat、strncpy、strncmp、strnlen 和 strncat。
例子:
输入:
“约翰 40 killer ”
司机:
...
cout << word1 << endl
<< word2 << endl
<< word3 << endl;
输出:
John
40
Hitman
这是我的代码
#include <iostream>
#include <cstring>
#include <stdio.h>
int main(){
const char *string = "Name Age Job";
char name[10];
char age[10];
char job[10];
int length = strlen(string);
int temp = 0;
bool flag = false;
for(int i = 0; i < length + 1; i++){
if(isspace(string[i]) && !flag){
strncpy(name, string, i);
name[i] = '\0';
temp = i;
flag = !flag;
cout << name << endl;
continue;
}
if(isspace(string[i])){
strncpy(age, string + temp + 1, length - i - 1);
age[temp - i] = '\0';
temp = i;
cout << age << endl;
continue;
}
if(string[i] == '\0'){
strncpy(job, string + temp + 1, length);
job[temp - i] = '\0';
cout << job << endl;
}
}
它有效,但它必须使用标志 bool 值,字符串不是动态的,仅适用于具有 2 个空格的字符串,并且有很多重复代码。总的来说真的很糟糕,但我花了大约两个小时在这上面,我不知道如何改进它。
如果你想知道,这确实是一道作业题,但这是一门入门课,我的教授只希望正确输出只有 3 个单词的硬编码字符串。但是,我想学习如何改进它,如果有任何帮助,我将不胜感激。谢谢。