C 避免总线错误:在测试用例中为10
我试图在不使用任何额外缓冲区的情况下从字符串中删除重复字符。当我像这样声明一个变量时,代码就起作用了C 避免总线错误:在测试用例中为10,c,C,我试图在不使用任何额外缓冲区的情况下从字符串中删除重复字符。当我像这样声明一个变量时,代码就起作用了 char s[] = "aaabbb"; 但当我尝试循环几个测试用例时就不是了 #include <stdio.h> #include <string.h> /* Design an algorithm and write code to remove the duplicate characters in a string without using any add
char s[] = "aaabbb";
但当我尝试循环几个测试用例时就不是了
#include <stdio.h>
#include <string.h>
/* Design an algorithm and write code to remove the duplicate characters in a string
without using any additional buffer. NOTE: One or two additional variables are fine.
An extra copy of the array is not. */
void removeDuplicates(char s[]) {
// attempts to modify array in place without extra buffer
}
int main() {
char *s[4] = {"aaaa", "abcd", "ababab", "aaabbb"};
int i;
for (i = 0; i < 6; i++) {
removeDuplicates(s[i]);
}
return 0;
}
#包括
#包括
/*设计算法并编写代码以删除字符串中的重复字符
不使用任何额外的缓冲区。注:一个或两个附加变量即可。
阵列的额外副本不可用*/
已删除的无效副本(字符s[]{
//尝试在没有额外缓冲区的情况下就地修改数组
}
int main(){
char*s[4]={“aaaa”,“abcd”,“ababab”,“aaabb”};
int i;
对于(i=0;i<6;i++){
移除的副本(s[i]);
}
返回0;
}
这将返回
总线错误:10
,因为它试图修改字符串文本“aaaa”
,但我不确定如何克服这一问题,同时为测试用例保持良好的设置 s[i]指向字符串文本,您需要一个二维字符串char
数组,如下所示:
char s[][7] = {"aaaa", "abcd", "ababab", "aaabbb"}
还要注意,对于长度为n
的字符串,由于'\0'-终止,您至少需要n+1
空格。
“aaabbb”的长度为6,因此它至少需要7个空格
那你就可以了
int main() {
char s[][7] = {"aaaa", "abcd", "ababab", "aaabbb"};
size_t i;
for (i = 0; i < sizeof s / sizeof s[0]; i++) {
removeDuplicates(s[i]);
}
return 0;
}
intmain(){
字符s[][7]={“aaaa”、“abcd”、“ababab”、“aaabb”};
尺寸i;
对于(i=0;i
s[i]指向字符串文本,您需要一个二维字符串char
数组,如下所示:
char s[][7] = {"aaaa", "abcd", "ababab", "aaabbb"}
还要注意,对于长度为n
的字符串,由于'\0'-终止,您至少需要n+1
空格。
“aaabbb”的长度为6,因此它至少需要7个空格
那你就可以了
int main() {
char s[][7] = {"aaaa", "abcd", "ababab", "aaabbb"};
size_t i;
for (i = 0; i < sizeof s / sizeof s[0]; i++) {
removeDuplicates(s[i]);
}
return 0;
}
intmain(){
字符s[][7]={“aaaa”、“abcd”、“ababab”、“aaabb”};
尺寸i;
对于(i=0;i
只需依次将每个数据压缩到[128]缓冲区。只需将每个数据压缩到[128]缓冲区。