C语言,字符串输出是乱码
就是要让他选出元音字母,然后复制到第二个字符串中去,刚学C语言,实在有点笨,请各位不吝指教,多谢了。...
就是要让他选出元音字母,然后复制到第二个字符串中去,刚学C语言,实在有点笨,请各位不吝指教,多谢了。
展开
19个回答
展开全部
struct s p[4];只是声明了一个名为p的struct s型数组,还没有为其赋值,里面全是机器垃圾,你就用for(i=0;...)printf...输出,能得到正常数据吗?都是垃圾,当然是乱码!另:全局数组p的[]中是4,=右边却用5个元素初始化,越界了!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原因向他们说的那样, 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");
}
可以这样改下:
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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’
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’
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没什么问题,第一个for循环后多了一个分号;只要保证你传入该函数的数组a中有准确的二十个字符就行,如:char a[]={'a','b','c','d','e','f','g','h','i','j','a','b','c','d','e','f','g','h','i','j'};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照程序是在a字符串中隔一个字符取一个形成b字符串
void main()
{ char a[21]={"1234567890abcdefghij"}
half(a);
}
输出24680bdfhj
如果出乱码,可能你的a数组赋值方面有问题,不知道你是如何定义a数组和调用函数的
void main()
{ char a[21]={"1234567890abcdefghij"}
half(a);
}
输出24680bdfhj
如果出乱码,可能你的a数组赋值方面有问题,不知道你是如何定义a数组和调用函数的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询