Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 反转字符串时printf输出错误_C_String_Pointers_Printf_Reverse - Fatal编程技术网

C 反转字符串时printf输出错误

C 反转字符串时printf输出错误,c,string,pointers,printf,reverse,C,String,Pointers,Printf,Reverse,这是反转字符串的代码 #include<stdio.h> char* function(char *); int main() { char a[]="computer"; printf("%s", function(a)); return 0; } char* function(char *p) { int l,i; char t; for (l=0;*(p+l)!='\0';l++); for(i=0; i<(l/2) ;

这是反转字符串的代码

#include<stdio.h>

char* function(char *);
int main()
{   
   char a[]="computer";
   printf("%s", function(a));
   return 0;
}

char* function(char *p)
{
   int l,i;
   char t;
   for (l=0;*(p+l)!='\0';l++);
   for(i=0; i<(l/2) ; i++)
    {
        t=*(p+i);
        *(p+i)=*(p+l-1-i);
        *(p+l-1-i)=t;
    }

   return (p);
}

在DEV C++中没有输出(输出为空)。但是它在Turbo C++中给出了期望的输出,即使是这个改变……为什么会这样呢?< /P> < P>参数>代码>计算机> <代码>,你传递到函数< /C> >,它是字符串文字,并且改变/操纵字符串文字的内容是未定义的行为。这就是您正在经历的-一些未定义的情况。

当您使用第二个版本写入字符串文本时,程序会调用未定义的行为。这个网站上至少有一千本这一期的副本,但标题很少反映实际问题,而且差异如此之大,令人惊讶地难以找到。Turbo C++可能比你的年龄大,因此得到一个现代编译器,把你的警告变成迂腐的水平。提示的精确复制:不要使用<代码> L>代码>和<代码> 1 < /C>和<代码> i>代码。我们可以把它搞混。?AnasZIZ是的,很难阅读。就个人而言,我不喜欢使用单字母变量名,除非在
循环或意义非常明显的情况下。我喜欢在可能的情况下使用一两个单词名。但是为什么它在turboC++ide中运行正常?@Anas:因为1980年代的软件没有检查程序员是否遵循语法规则。它只是希望他们能。
printf("%s", function("computer"));