【发布时间】:2022-01-11 12:37:06
【问题描述】:
我有字符串,以数组形式提供。然后我做这个操作,比如重新排列单词中的字母。应该是“我喜欢狗”->“I keli gsdo”然后我需要做相反的事情,比如把这个字符串变成“我再次喜欢狗”
这就是我获得句子的方式:
do {
gets_s(sent);
if (strcmp(sent, STEND) == 0)
break;
mp[k] = _strdup(sent);
} while (++k < NMAX);
以及我如何改变字母
for (int rech = 0; rech < k; rech++) {
char *piece;
piece = strtok(mp[rech], " ");
while (piece != NULL) {
char temp[20];
char *piece2 = temp;
strcpy(piece2, piece);
int k = strlen(piece) / 2;
int i =strlen(piece);
for (i - 1; i != 0; i--) {
piece[k - 1] = piece2[i - 1];
k--;
}
k = strlen(piece) / 2;
for (i = 0;k!=strlen(piece);i++) {
piece[k] = piece2[i];
k++;
}
//printf("%s ", piece1);
printf("%s ", piece);
piece = strtok(NULL, " ");
}
printf("\n");
}
但是当我想在数组 mp 中再次获得我的第一句话时,我得到了“likeldogsdo”。而且由于没有空格,我无法再次获取此文本。 如何在这个字符串中加入空格?
【问题讨论】:
-
请发帖minimal reproducible example。对输入进行硬编码很有帮助。
-
使用
strtok来查找空格似乎有点矫枉过正。如果您手动浏览字符串,您将获得有关单词开始/结束位置所需的所有信息,这也意味着长度,这也将允许就地交换每个半字的字符。这使得该操作具有非破坏性和可逆性,而strtok会将 NUL 字节写入原始字符串,这可能是您遇到问题的部分原因。 -
如何排列奇数字母单词示例
"about"
标签: arrays c string char strtok