繁体   English   中英

C语言中的字符串逆变器程序中的警告

[英]Warning in String Inverter Program in C

我是一个非常缺乏C语言的学习者,并且在此代码中得到了警告,该警告应该是在调用(在Linux Ubuntu中编程)时反转作为命令的第一个参数传递的字符串。

警告是: 14:9:警告:赋值使指针从指针生成整数而不进行强制转换

    #include <stdio.h>
    #include <string.h>

    int main(int argc, char *argv[]) {

        char str[80];
        int p = 0;
        int i;

        for(i = strlen(argv[1]) - 1; i >= 0; i--){
            str[p] = argv [1][i];
            p++;
        }

        str[p] = "\0";
        printf("%s\n", str);

    }

当我在此处使用命令./command string时,假定该代码(并且它包含一些不需要的字符)会打印第一个参数的反向字符串。

因此,例如,当我使用./invert_string字符串时,控制台将打印出小写字母以及一堆问号和其他字符。 是否有一个原因? 代码不应该在内存中打印值吗?

您所见问题的即时解决方案是将nul终止语句更改为:

str[p] = '\0';

由于要分配一个字符('\\ 0')而不是一个字符*(“ \\ 0”),因此需要进行此更改。

但是,由于源字符串以nul终止,因此您可以将终止符与整个字符串一起复制。

另外,请注意,如果源字符串的长度超过80个字符,则将导致缓冲区溢出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM