gpt4 book ai didi

c - 从标准 C 中的字符串中删除字符

转载 作者:IT王子 更新时间:2023-10-29 01:09:00 25 4
gpt4 key购买 nike

我在一个(ubuntu precise)linux 系统上,我想从 C 中的字符串中删除前导字符(制表符)。我认为以下代码适用于我以前的安装(ubuntu oneric),但我现在发现它不再有效(请注意,这是通用 UTF-8 字符代码的简化版本):

#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{

int nbytes = 10000;
char *my_line, *my_char;

my_line = (char *)malloc((nbytes + 1)*sizeof(char));

strcpy(my_line,"\tinterface(quiet=true):");
printf("MY_LINE_ORIG=%s\n",my_line);

while((my_char=strchr(my_line,9))!=NULL){
strcpy(my_char, my_char+1);
}
printf("MY_LINE=%s\n",my_line);

return 0;
}

我愿意

gcc -o removetab removetab.c

当执行 removetab 时我得到

MY_LINE_ORIG=   interface(quiet=true):
MY_LINE=interfae(quiet==true):

注意“=”和缺少的“c”的重复!怎么了,或者我怎样才能实现这一目标。代码应支持 UTF-8 字符串。

最佳答案

strcpy(my_char, my_char+1);

strcpy 字符串不得重叠。

来自 C 标准(强调我的):

(C99, 7.21.2.3p2) "The strcpy function copies the string pointed to by s2 (including the terminating null character) into the array pointed to by s1. If copying takes place between objects that overlap, the behavior is undefined."

关于c - 从标准 C 中的字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10542390/

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