如何给数组赋值中文

这个是0到6分别表示星期一到星期日的代码,为什么错,如何给数组赋值中文
#include<stdio.h>
char xq(m)
{
char a[7][6]={{"星期日"},{"星期一"},{"星期二"},{"星期三"},{"星期四"},{"星期五"},{"星期六"}};//据说中文是两个字节的所以定义的二维数组为7行6列的
return a[m][6];
}
int main()
{
int a;
scanf("%d",&a);
printf("%c",xq(a));

}

和普通数组差不多。
一维数组: char a[] = "你好";
二维数组: char b[3][] = { "你好", "我好", "大家好" };
三维数组: char c[2][3][] = { {"一", "二", "三"}, {"四", "五", "六"}, {"七","八","九"} };

-----
另外,给你看个例子。
对于GBK编码码:
char *s = "静夜思";
char a[7] = { s[0], s[1], s[2], s[3], s[4], s[5], 0 };
printf("%s\n", s); // 会输出 ‘静夜思’ 三个字。
printf ("%s\n", a); // 会输出 ‘静夜思’ 三个字。
char b[3] = { s[2], s[3], 0};
printf ("%s\n", b); // 会输出 ‘夜’ 一字。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-29
你定义的是字符数组,当然无法赋字符串的值,定义一个字符串的数组就可以了。如:string[][]。
第2个回答  2013-11-29
应该是数组越界了,每个汉字占用2个字节,再加上一个字符串结束符'\0',需要占用7个字节,
而你只定义了6个字节的长度数组放,肯定导致数组越界,会出现不可预知的异常
第3个回答  2013-11-29
字符串默认最后一位存放/0作为结束标志,你这样内存越界了,应该把a[7][6]变成a[7][7]

而且你的return也不对 return a[m],返回值改为char* ,printf 修改为,printf("%s",xq(a));追问

还是不行

追答

#include "stdio.h"
#include "string.h"
char a[7][7] = {{"星期日"},{"星期一"},{"星期二"},{"星期三"},{"星期四"},{"星期五"},{"星期六"}};
char * xq(int m)
{
if( m 7)
m = 7;
return a[(m-1)];
}
int _tmain(int argc, _TCHAR* argv[])
{
int a;
scanf_s("%d",&a);

printf("%s",xq(a));
return 0;
}

照这个写吧,测试过了

追问

为什么必须使用指针呢

第4个回答  2013-11-29
#include<stdio.h>
char a[7][6]={{"星期日"},{"星期一"},{"星期二"},{"星期三"},{"星期四"},{"星期五"},{"星期六"}};//据说中文是两个字节的所以定义的二维数组为7行6列的
char* xq(m)
{
return a[m];
}
int main()
{
int a;
scanf("%d",&a);
printf("%s",xq(a));
return 0;
}本回答被网友采纳
相似回答