首页 > 解决方案 > 如何更改 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并获得正确的结果?

谢谢你。

标签: arrayscstring

解决方案


sizeof(string)为您提供整个数组的大小(以字节为单位),而不是字符串中的字符数。

要获取字符串的长度,您需要strlen

int size = strlen(string);

推荐阅读