C语言将数字字符串末尾的0全部删除
时间: 2024-12-08 21:23:25 浏览: 19
在C语言中,如果你想删除数字字符串(通常是整数)末尾的零,可以使用`strcspn`函数配合指针操作来实现。这里提供一种常见的方法:
```c
#include <stdio.h>
#include <string.h>
// 函数原型
char* remove_trailing_zeros(char* str);
// 实现函数
char* remove_trailing_zeros(char* str) {
// 获取字符串长度
size_t len = strlen(str);
// 遍历字符串从后向前找非零字符的位置
for (size_t i = len - 1; i > 0 && str[i] == '0'; i--) {}
// 如果所有字符都是0,则直接返回空字符串
if (i == 0)
return str;
// 移动末尾的非0字符到字符串末尾并添加'\0'
memmove(str + i + 1, str + i, len - i); // 使用memmove避免覆盖原始字符串
str[i] = '\0';
return str;
}
int main() {
char num_str[] = "12300";
printf("Original string: %s\n", num_str);
char* new_str = remove_trailing_zeros(num_str);
printf("String after removing trailing zeros: %s\n", new_str);
free(new_str); // 注意在程序结束前释放动态分配的内存
return 0;
}
```
在这个例子中,`remove_trailing_zeros`函数会删除字符串末尾的所有连续的0,只保留最后一个0或者非0字符。
阅读全文