【发布时间】:2021-09-26 07:34:26
【问题描述】:
我写了下面的程序来反转字符串,但是反转后没有打印出来。 可能是什么问题?
#include<stdio.h>
#include<string.h>
main()
{
char p[] = "krishna";
strrv(p);
printf("%s", p); // -----> nothing prints here
}
void strrv(char p[])
{
int l = strlen(p);
int i=0;
char tmp;
while(i<l)
{
tmp = p[i];
p[i] = p[l];
p[l] = tmp;
i++;
l--;
}
}
【问题讨论】:
-
首先,关于在调用函数之前声明函数,您的教科书是怎么说的?其次,你的教科书对字符串有什么看法,更准确地说是关于它们是如何以空终止的?你的函数是否也反转了那个空终止符?
-
您真的应该以此为契机学习两件事:使用额外警告进行构建,以及将编译器生成的所有警告视为必须修复的实际错误;以及如何调试您的代码,例如,通过使用调试器逐条执行代码语句,同时监控变量及其值。
-
有大量关于如何反转字符串的代码示例。你看过其中一个吗?