1
我是一个非常缺乏经验的C学习者,我一直在这个代码中得到一个警告,这是应该反转字符串作为调用时的第一个参数传递(编程中Linux Ubuntu)。在字符串逆变器程序中的警告C
的警告是:14:9:警告:分配使得整数pointr没有投
#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和一堆问号以及其他字符。是否有一个原因?代码是否在内存中打印值不应该?
打开编译器警告! 'str [p] =“\ 0”;'具有不兼容的类型:左边是一个'char',右边是'指向char'的指针(通过从char数组自动转换)。无论如何,编译器都不应该接受。 – pmg
你也不需要做一个反向拷贝来做到这一点。 'fputc(argv [1] [i],stdout);'在循环中执行时不需要不必要的缓冲区,不再需要'str'和'p'。理想情况下,你使用'char *',并且还要抛弃重复的'strlen'调用。 – WhozCraig