arrays - 如何更改 Array 的大小?(以及如何丢弃 Array 的垃圾值?)
问题描述
嗨,我在下面写了一个程序。这是一个程序,当用户给出一个字符串时,它会将字母向后保存在一个数组中。
int main(){
char string[100];
char gnirts[100];
int i, j;
printf("String : ");
scanf("%s", string);
int size = sizeof(string)/sizeof(char);
for(i=size-1, j=0; 0<=i ; i--, j++){
gnirts[j] = string[i];
}
for(i=0; i<size; i++){
if(gnirts[i])
printf("%c", gnirts[i]);
}
return 0;
}
我给了程序
String : asdf
并收到了
�i���i���i�fdsa
一开始我将大小设置string
为 100。然后在行中int size = sizeof(string)/sizeof(char);
设置 Arraystring
的大小,这取决于用户给出的内容。但它不起作用。在有意义的值之前,我得到了一个垃圾值。
如何删除垃圾值并设置新的数组大小string
并获得正确的结果?
谢谢你。
解决方案
sizeof(string)
为您提供整个数组的大小(以字节为单位),而不是字符串中的字符数。
要获取字符串的长度,您需要strlen
:
int size = strlen(string);
推荐阅读
- android - Flutter:未来的构建
- c# - 我无法使用多个按钮将子项添加到 ListView
- ios - 使用 fastlane 远程构建 ios 应用程序时出错
- javascript - 如何使用 Bootstrap 设置父 div 的表格高度
- tensorflow - 有没有办法在 TensorFlow 中选择学习率和预热学习率(没有 Keras 的 API)?
- javascript - 添加多个文件而不刷新当前文件的解决方法(HTML、JS)
- python - 如何在 check_in_date 和 check_out_date 之间划分收入,并将这些日期转换为名为 date 的单列
- mongodb - Mongo Project 变成一个聚合对象
- scala - Scala 通过嵌套的 Seq 集合进行过滤
- android - 如何获取“使用亚马逊登录”安全配置文件的 MD5 签名