C 中的反转字符串

2024-04-13

下面的代码有什么问题?

#define N 30
int main() {
    char str[N], new_str[N];
    int i,len;
    printf("Please enter 20 letters. \n");
    scanf("%s", str);
    len = strlen(str);
    printf("The length of str is  %d ", len);
    for (i=0; i< len; i++)
        new_str[i]=str[len-1-i];
    printf("The result is: %s\n", new_str);
    return 1;
}

我检查了对于 16 个字符以下的每个字符串,程序都可以正常运行,并且上面它在末尾返回未定义的字符:

  Please enter 20 letters.
  1234567891111111

  The result is: 1111111987654321q=V?.

但是,如果我初始化str, new_str有了“”,问题就解决了。我仍然想知道是什么原因导致了这个问题。


您需要添加空终止符:

new_str[len] = '\0';

否则,最后一个字符后面有垃圾,所以字符串没有结束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的反转字符串 的相关文章

随机推荐