printf末尾的问号

Gen*_*neX 1 c string

这是在C中反转字符串的简单代码,最后一个printf语句打印相反的顺序,但是在末尾带有问号,而我只想打印反转的字符串而不是问号。如何解决?

#include<stdio.h>
#include<string.h>
int main(){
char new_string[100];
char string[100];
scanf("%s",string);
printf("original_number = %s\n",string);
int i;
int l = strlen(string)-1;

for(i = 0; i<=l; i++){
 new_string[i] = string[l-i];
 printf("%c\n",new_string[i]);
    }
 printf("rev_number = %s\n",new_string);
}
Run Code Online (Sandbox Code Playgroud)

输入:abcd

输出:original_number = abcd

d

C

b

一种

rev_number = DCBA?

Ris*_*shi 5

您需要将字符串终止为null。在要反转字符串的for循环之后的位置添加此行。

new_string[i]='\0';

for(i = 0; i<=l; i++){
   new_string[i] = string[l-i];
   printf("%c\n",new_string[i]);
}
new_string[i]='\0'; // add this 
printf("rev_number = %s\n",new_string);
Run Code Online (Sandbox Code Playgroud)

在这里检查