我正在通过以下代码练习C:
s[i]=s[j];
但是printf永远不会执行。如果我删除:
ProjectListComponent
printf执行。这很奇怪,因为尽管循环结束,但无论如何都与上述分配无关。任何线索为什么printf不执行上述任务?
编辑:
现在通过更正printf签名进行打印。
答案 0 :(得分:5)
您应该将j
设置为len-1
作为第一次更改,否则您将在其内容之外访问s
。更确切地说,s[len]
将是NUL
(或字符\0
),因为这是字符串在C中的存储方式。它将与第一个元素交换。 s
,有效地使它成为零长度字符串/空字符串。
其次,格式应为printf("\nReverse string is %s", s);
另外,你应该在返回之前将r
分配给某个东西(可能是s
?),否则它会被初始化为乱码并在你尝试使用它时引起问题作为指针。
答案 1 :(得分:3)
您正在传递%s
作为格式说明符,它需要字符串参数,但将整数值i
作为值传递。