我已经看到类似的事情(变量的变化)有效,但是这个人不能告诉我为什么? 这是代码:
#include <stdio.h>
#include <string.h>
int main(){
int i,j,k;
char str[255],rvrs[255];
printf("Insert your string: ");
gets(str);
i=strlen(str);
k=i;
for(j=0;j<=i;j++,k--){
rvrs[k]=str[j];
}
printf("%s",rvrs);
}
答案 0 :(得分:3)
在循环的最后一次迭代中,j
等于i
。 str[i]
是空字符(str[0]
到str[i-1]
是字符串中的i
非空字符)。因此,在最后一次迭代中,rvrs[k]
被设置为空字符。而且,此时k
为零。因此,rvrs
包含一个空字符串(一个字符串,其中空字符是第一个字符,因此字符串以非空字符结尾)。
要解决此问题,您需要修改代码:
首先,将rvrs[i]
设置为零,以便它会在您希望的位置终止。
其次,修改循环以将元素从0
正确地反转到i-1
,而不是从0
到i
。这样做时要小心确保k
具有适当的值。
答案 1 :(得分:0)
使用j<=strlen(str)
,您可以反转字符串,包括字符串终止符。因此,rvrs
的第一个字符将是字符串终止字符,这意味着rvrs
将/表现为“空”字符串。
相反,您需要撤销indizes 0..strlen(str)-1
之间的所有内容,并且应该在rvrs
位置终止rvrs[strlen(str)]='\0'
。
BTW:请注意,gets
已过时/已弃用。请改用fgets
。
答案 2 :(得分:0)
对于根据C标准的初学者,不带参数的函数main
应声明为
int main( void )
函数gets
不安全,不再受C标准支持。例如,使用标准函数fgets
。
当j
等于i
而strlen(str)
等于str[j]
时,rvrs
等于&#39; \ 0&#39;。也就是说,终止零写在数组rvrs[k]=str[j];
strlen
没有意义。
考虑到函数size_t
的返回类型int
而不是#include <stdio.h>
#include <string.h>
#define N 255
int main(void)
{
char str[N], rvrs[N];
str[0] = '\0';
printf("Insert your string: ");
fgets( str, sizeof( str ), stdin );
size_t n = strcspn( str, "\n" );
for ( size_t j = 0; j != n; j++ )
{
rvrs[j] = str[n - j - 1];
}
rvrs[n] = '\0';
puts( rvrs );
return 0;
}
。
程序可以按以下方式查看
Insert your string: Hello David Machado
odahcaM divaD olleH
其输出可能是
<div class="Tabs">
<ul>
<li id="tab1" class="Active">Tab 1</li>
<li id="tab2">Tab 2</li>
<li id="tab3">Tab 3</li>
</ul>
</div>
<div id="tab1-content" class="Tab" style="display:none">
<p>Tab 1 Content</p>
</div>
<div id="tab2-content" class="Tab" style="display:none">
<p>Tab 2 Content</p>
</div>
<div id="tab3-content" class="Tab" style="display:none">
<p>Tab 3 Content</p>
</div>
<script>
$(document).ready(function () {
if ($('li #tab1 .active')) {
$('#tab1-content').show();
}
});
$('#tab1').click(function () {
$('#tab1-content').prev().hide();
$('#tab1-content').show();
});
$('#tab2').click(function () {
$('#tab2-content').prev().hide();
$('#tab2-content').show();
});
$('#tab3').click(function () {
$('#tab3-content').prev().hide();
$('#tab3-content').show();
});
</script>