c语言 字符串逆序输出
发布网友
发布时间:2022-05-06 02:24
我来回答
共2个回答
热心网友
时间:2022-06-28 13:00
#include <stdio.h>
#include <string.h>
void main(void)
{
char string1[100],string2[100];
int i, k;
printf("Enter a string:");
gets(string1);
k = strlen(string1);
for (i=0;string1[i]!='\0';i++)
{
string2[i]=string1[k-1-i];
}
string2[i] = '\0';
printf("Output:");
printf("%s",string2);
}
优化一下:
#include <stdio.h>
#include <string.h>
void main(void)
{
char string[100];
int i, j, k;
char t;
printf("Enter a string:");
gets(string);
k = strlen(string);
j = k/2;
for (i=0;i<j;i++)
{
t = string[i];
string[i] = string[k-1-i];
string[k-1-i] = t;
}
string[k] = '\0';
printf("Output:");
printf("%s",string2);
}追问为什么要加 string2[i] = '\0'; 这句?
追答两个原因:
1、string2你没有做任何的initialize,里面的数据是乱的;
2、string1 ==> string2的时候,程序仅仅关注了有效字符,没有考虑到string1作为一个字符串来说还有一个结束符号'\0'。因为程序的要求是“字符串逆序”所以务必保证string2也是一个string才行,否则离题了
热心网友
时间:2022-06-28 13:00
在string2的结尾加上一个'\0'
string2[...] = '\0'