[英]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.