gpt4 book ai didi

c - 剥离 char* myargs 数组中的最后一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:01 25 4
gpt4 key购买 nike

我知道这是一个相当初级的问题,但我仍在学习 C 字符数组、指针等,因此非常感谢任何帮助。

我目前有一个“字符串”存储在 myargs[1] 中,其中 myargs 被定义为 char *myargs[2]。对于此示例,让我们假设字符串完全如下:“Hello how are you”(包括尾随空格)。我想去掉其尾随空格的“字符串”。我知道 char 数组是 C 中的字符串,并且 char 数组需要以 '\0' 字符结尾。但是,我不确定在这种情况下如何实现。

编辑:

为了提供更多上下文:我正在尝试将从命令行读取的字符串连接成存储在 myargs[1] 中保存的地址中的单个字符串。我在每个字符串之间添加一个空格,这是在 while 循环中完成的,直到满足终止条件。但是,由于在循环终止之前添加了一个空格,因此我需要删除最后一个空格。相关代码摘录如下:

char *myargs[2];
while (parameterIndex != argc && strcmp(argv[parameterIndex], "+") != 0) {
printf("%d", parameterIndex);
printf("\n");
strcat(myargs[1], argv[parameterIndex]);
strcat(myargs[1], " ");
parameterIndex = parameterIndex + 1;
}

myargs[1] 中的串联参数将在 execve 库函数中用于执行当前存储在 myargs[0] 中的命令。

最佳答案

要终止字符串,您需要将空字符放在您要包含的最后一个位置之后。在您的情况下,您可以做的是向后遍历字符串,直到遇到非空格字符,然后在其后立即放置一个空字符。

for (int i=strlen(my_string)-1; i >= 0; i--) {
if (my_string[i] != ' ') {
my_string[i+1] = '\0';
break;
}
}

请注意,此代码将去除所有尾随空格字符。如果你保证只有 1 个尾随空格字符,那么它就更简单了:

  int length = strlen(my_string);
my_string[length-1] = '\0';

关于c - 剥离 char* myargs 数组中的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55168968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com