加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中反转字符串

发布时间:2020-12-16 10:53:10 所属栏目:百科 来源:网络整理
导读:以下代码有什么问题? #define N 30int 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-
以下代码有什么问题?

#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: %sn",new_str);
    return 1;
}

我检查了16个字符以下的每个字符串程序是否正常,上面它返回结尾的未定义字符:

Please enter 20 letters.
  1234567892222211

  The result is: 2222211987654321q=V?.

但是,如果我使用“”初始化str,new_str问题就解决了.我仍然想知道导致问题的原因.

解决方法

您需要添加空终止符:

new_str[len] = '';

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读