【发布时间】:2019-08-20 22:28:44
【问题描述】:
我正在尝试复制用户输入字符串的其余部分。始终输入以下内容:机场、00:00、00:00。数字是飞行时间和停留时间。在我的代码中,我已经让它吐出机场,但尝试使用 strchr 查找第一个“,”之后的所有内容是一种痛苦。有没有办法可以删除机场并将其余部分放入新字符串并继续使用 strchr?我必须重新格式化用逗号分隔的字符串是目标。最终结果应该是“城市有飞行时间 tt.tt 小时和停留时间 tt.tt 小时”。我不能使用 scanf 等,所以看起来 strchr 和 strcopy 可能是我唯一的选择。任何帮助表示赞赏。
当我试图在字符串中的最后一个“,”之后查找字符时,我目前的错误提示。
分配规则:不要使用 strtok()、任何与 scanf 相关的函数、任何对字符串数据进行标记化的函数。
int main()
{
int counter = 0;
int flightTimeNum = 0;
char userInput[81] ="";
char userInputNew[81] = "";
char cityNew[20] = "";
char flightTime[20] = "";
char layOverTime[20] = "";
fgets(userInput, 81, stdin);
char *city;
char *flight;
char *layover;
city = strchr(userInput, ',');
strncpy(cityNew, userInput, city - userInput);
printf("%s\n" ,cityNew);
layover = strrchr(userInput, ',');
strncpy(layOverTime, userInput, layover - userInput);
printf("%s\n", layOverTime);
printf("Press ENTER key to Continue\n");
getchar();
}
【问题讨论】:
-
你看过strtok吗?
-
对不起,我更新了我的帖子,规则是“不要使用 strtok(),任何与 scanf 相关的函数,任何对字符串数据进行标记化的函数”
-
当 strchr 似乎只喜欢特定角色的一个实例时,我基本上一直在努力弄清楚该怎么做,所以任何帮助都可能挽救我的理智!跨度>
-
由于这是一项作业,我不会发布答案,但这里有一个提示。
strncpy(flightTime, userInput, flightTime - userInputNew);--> 这看起来根本不对。flightTime和userInputNew不指向同一个数组。那个减法不会给你你想要的。您可能希望将您的算术基于city和flight。但是你也应该检查你的假设city>flight并且两者都不是NULL。 -
你还想确保你为空终止你的字符串
标签: c string c-strings strcpy strchr