我知道这是一个非常基本的问题,但是我仍在学习C char数组,指针等,因此任何帮助将不胜感激。
我目前在myargs[1]
中存储了一个“字符串”,其中myargs已定义为char *myargs[2]
。对于此示例,让我们假设字符串完全如下:“您好,您好”(包括尾随空格)。我想删除其尾随空间的“字符串”。我知道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]中的命令。
答案 0 :(得分: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';