Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 避免总线错误:在测试用例中为10_C - Fatal编程技术网

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]缓冲区。