一个很简单的有关问题:要求字符串倒序输出!为什么就出现奇怪的有关问题,望高人解救
一个很简单的问题:要求字符串倒序输出!为什么就出现奇怪的问题,望高人解救!
#include<stdio.h>
int main()
{
char string[]="Embedded Linux";
printf("The original string: %s\n",string);
char *string1;
int size,i;
size = strlen(string);
string1 = (char*)malloc(size+1);
for(i=0;i<size;i++)
string1[size-i] = string[i];
string1[size+1] = '';
printf("The string afterward: %s\n",string1);
return 0;
}
------解决方案--------------------
LZ,你的问题是把下标搞错了,下标是从0开始的,所以malloc出来的size+1的空间,最后一个的下标是size;
#include<stdio.h>
int main()
{
char string[]="Embedded Linux";
printf("The original string: %s\n",string);
char *string1;
int size,i;
size = strlen(string);
string1 = (char*)malloc(size+1);
for(i=0;i<size;i++)
string1[size-i] = string[i];
string1[size+1] = '';
printf("The string afterward: %s\n",string1);
return 0;
}
------解决方案--------------------
LZ,你的问题是把下标搞错了,下标是从0开始的,所以malloc出来的size+1的空间,最后一个的下标是size;
- C/C++ code
#include<stdio.h> #include <string.h> #include <stdlib.h> int main() { char string[]="Embedded Linux"; printf("The original string: %s\n",string); char *string1; int size,i; size = strlen(string); string1 = (char*)malloc(size+1); for(i=0;i<size;i++) string1[size-i-1] = string[i];//这里改成下,i=0是,应该对size-1的位置赋值,下标是从0开始的。 string1[size] = '\0';//这里 printf("The string afterward: %s\n",string1); return 0; }
------解决方案--------------------