我有一个循环运行以在一些特殊字符(&、|、<、>)之间添加空格。以下代码成功在特殊字符前后添加空格:
char keys[] = "<>&|";
int i = strcspn (input,keys);
appenda(input, " " , i);
appenda(input, " " , i+2);
上面的代码将输入“asdf&asdf”转换为“asdf & asdf”。
但是,我的目标是对整个输入中的每个特殊字符都这样做,即使有多个特殊字符(如“asdf&asdf&asdf”)。所以我做了一个while循环:
char keys[] = "<>&|";
int i = strcspn (input,keys);
while(i < strlen(input)){
appenda(input, " " , i);
appenda(input, " " , i+2);
i = strcspn (input,keys);
}
然而,当我现在运行我的代码时,它返回“ * **检测到堆栈粉碎* ** ”
关于这意味着什么以及如何解决它的任何想法?
EDIT Appenda 在指定点将一个字符串插入另一个字符串。它接受 3 个参数:第一个是我插入的字符串,第二个是我要插入的字符串,第三个是索引。所以 appenda(ABCD, X, 2) 返回 AXBCD