c语言怎么去掉最后一个空格
在C语言中,去掉字符串最后一个空格的方法有很多,这里我将介绍两种常用的方法:一种是使用循环遍历字符串,另一种是使用strtok函数,下面我将详细介绍这两种方法的实现过程。
(图片来源网络,侵删)
1、使用循环遍历字符串
我们需要创建一个字符数组来存储字符串,我们使用一个循环遍历这个字符数组,从后往前查找空格字符,当我们找到一个空格字符时,我们将前面的所有字符复制到一个新的字符数组中,并在新数组的末尾添加一个空字符('\0'),以表示字符串的结束,我们返回新数组的指针。
以下是这种方法的代码实现:
#include <stdio.h> #include <string.h> char *remove_last_space(const char *str) { int len = strlen(str); char *new_str = (char *)malloc((len 1) * sizeof(char)); int new_len = 0; for (int i = len 1; i >= 0; i) { if (str[i] != ' ') { new_str[new_len++] = str[i]; } else if (i == 0 || str[i 1] != ' ') { new_str[new_len++] = str[i]; } } new_str[new_len] = '\0'; return new_str; } int main() { const char *str = "Hello, World! "; char *new_str = remove_last_space(str); printf("Original string: %s ", str); printf("Modified string: %s ", new_str); free(new_str); return 0; }
2、使用strtok函数
strtok函数是C语言中的一个字符串处理函数,它可以将一个字符串分割成多个子串,我们可以使用strtok函数将字符串分割成第一个空格之前的部分和第一个空格之后的部分,然后将这两部分重新组合成一个字符串,这样,我们就可以去掉字符串中的最后一个空格。
以下是这种方法的代码实现:
#include <stdio.h> #include <string.h> char *remove_last_space(const char *str) { char *token = strtok(str, " "); char *new_str = (char *)malloc(strlen(token) + 2); new_str[0] = token[0]; new_str[1] = '\0'; new_str[2] = '\0'; token = strtok(NULL, " "); while (token != NULL) { int len = strlen(new_str); int new_len = len + strlen(token) + 2; char *temp = (char *)realloc(new_str, new_len * sizeof(char)); if (temp == NULL) { printf("Error: memory allocation failed. "); free(new_str); return NULL; } new_str = temp; strcat(new_str, token); new_str[new_len 1] = ' '; new_str[new_len] = '\0'; token = strtok(NULL, " "); } return new_str; } int main() { const char *str = "Hello, World! "; char *new_str = remove_last_space(str); printf("Original string: %s ", str); printf("Modified string: %s ", new_str); free(new_str); return 0; }
在C语言中,去掉字符串最后一个空格的方法有两种:一种是使用循环遍历字符串,另一种是使用strtok函数,这两种方法都可以实现去除最后一个空格的目的,但它们的实现方式和性能有所不同,在实际编程中,我们可以根据具体需求选择合适的方法。