gpt4 book ai didi

c - 函数使数组为空

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:00 25 4
gpt4 key购买 nike

我有以下代码:

#include <stdio.h>

void insertion_sort(char[], int);
void swap(char*, char*);

int main() {
char s[] = "hello world";
puts(s);
insertion_sort(s, sizeof(s)/sizeof(char));
puts("done\n");
puts(s);
return 0;
}

void swap(char* a, char* b) {
char tmp = *a;
*a = *b;
*b = tmp;
}

void insertion_sort(char s[], int n)
{
int i,j;
/* counters */
for (i=1; i<n; i++) {
j=i;
while ((j>0) && (s[j] < s[j-1])) {
swap(&s[j],&s[j-1]);
j = j-1;
}
printf("%s\n", s);
}
}

问题是,在 insertion_sort() 函数调用之后,s 变为空 - puts(s) 不打印任何内容。

请指教。

最佳答案

改变:

insertion_sort(s, sizeof(s)/sizeof(char));

到:

insertion_sort(s, strlen(s));

否则,您将在排序中包含 s[]'\0' 终止符。

请注意,您需要为 strlen 添加一个 header ,因此请更改:

#include <stdio.h>

到:

#include <stdio.h>    // printf etc
#include <string.h> // strlen etc

关于c - 函数使数组为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11427935/

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