gpt4 book ai didi

c - C中的String Inverter Program中的警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:09 26 4
gpt4 key购买 nike

我是一个非常没有经验的 C 学习者,我在这段代码中收到了警告,它应该在调用时反转作为命令的第一个参数传递的字符串(在 Linux Ubuntu 中编程)。

警告是:14:9: warning: assignment makes integer from pointr without cast

    #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 stringhere 时,代码应该(它确实处理了一些不需要的字符)打印第一个参数的反转字符串。

举个例子,当我使用 ./invert_string 字符串时,控制台会打印 gnirts 和一堆问号以及其他字符。是否有一个原因?代码是否在内存中打印了不应该打印的值?

最佳答案

您所看到的问题的直接解决方法是将 nul 终止语句更改为:

str[p] = '\0';

此更改是必需的,因为您要分配一个 char ('\0') 而不是 char * ("\0")。

但是,由于源字符串以 nul 终止,您可以复制整个字符串的终止符。

此外,请注意,如果源字符串的长度超过 80 个字符,则会出现缓冲区溢出。

关于c - C中的String Inverter Program中的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com