C语言,字符串输出是乱码

就是要让他选出元音字母,然后复制到第二个字符串中去,刚学C语言,实在有点笨,请各位不吝指教,多谢了。

第1个回答  2018-06-23
struct s p[4];只是声明了一个名为p的struct s型数组,还没有为其赋值,里面全是机器垃圾,你就用for(i=0;...)printf...输出,能得到正常数据吗?都是垃圾,当然是乱码!另:全局数组p的[]中是4,=右边却用5个元素初始化,越界了!!
第2个回答  2010-03-04
原因向他们说的那样, char a[]是一个局部变量, 函数返回后他在栈上的空间就自动释放了...
可以这样改下:

#include <iostream>
#include <time.h>
#include<stdlib.h>
#include <string>
using namespace std;

#define MAX_LEN 10

char* getnick()
{
int i,j;
char b;
char* a = (char*)malloc(sizeof(char) * MAX_LEN);
memset(a, '\0', sizeof(char) * MAX_LEN);
strcpy(a, "abcdef");

srand((unsigned)time(NULL));
for(i=0;i<7;i++)
{
j = rand()%7;
b = a[i];
a[i] = a[j];
a[j] = b;
}
return a;
}

void main()
{
char *p = NULL;
int i=0;

p=getnick();
puts(p);

delete[] p;
p = NULL;

system("pause");
}
第3个回答  2013-11-03
#include <stdio.h>
int main()
{
char str1[20],str2[20];
int i,n=0;
gets(str1);
for(i=0;str1[i]!='\0';i++)
{
if((str1[i]=='A')||(str1[i]=='E'))
{
str2[n]=str1[i];
n++;
}
str2[n]='\0';
}
puts(str2);
putchar('\n');
return 0;
}
就是 str2 的结束加上结束符‘\0’
第4个回答  2014-03-27
没什么问题,第一个for循环后多了一个分号;只要保证你传入该函数的数组a中有准确的二十个字符就行,如:char a[]={'a','b','c','d','e','f','g','h','i','j','a','b','c','d','e','f','g','h','i','j'};
第5个回答  2014-03-27
按照程序是在a字符串中隔一个字符取一个形成b字符串
void main()
{ char a[21]={"1234567890abcdefghij"}
half(a);
}
输出24680bdfhj
如果出乱码,可能你的a数组赋值方面有问题,不知道你是如何定义a数组和调用函数的
相似回答