C语言字符数组初始化以后是不是不能再给字符数组赋值了?

这段代码报错:
#include<stdio.h>
int main()
{
char c[20]="0",d;
char f[15]="0";
long a;
int b;
for(;scanf("%d%s%d",&a,c,&b)!=EOF;)
{

if(b<59)f="FAIL";
if(b>=59&&b<69)f="PASS";
if(b>=69&&b<79)f="AVERAGE";
if(b>=79&&b<89)f="GOOD";
if(b>=69)f="EXCELLENT";
d=getchar();
printf("%d %s %s\n",a,c,);
}
return 0;
}

可以赋值啊!
如f="FAIL"这个地方,这里的f是地址,f 数组的首地址,一个字符串赋值过去,提示出错的
这个是常犯的错误(我课设的时候也犯了一下,再次复习一下),要注意了。
这个地方顺便补充一下,字符指针那里可以直接赋值,这个数组和指针有区别的。具体的,看看书呐,书上有详细说明的。

用个strcpy();函数,头文件是string.h

给你改过了,你看看吧
#include<stdio.h>
#include <string.h>
int main()
{
char c[20]="0",d;
char f[15]="0";
long a;
int b;
for(;scanf("%d%s%d",&a,c,&b)!=EOF;)
{

if(b<59)strcpy(f,"FAIL");
if(b>=59&&b<69)strcpy(f,"PASS");
if(b>=69&&b<79)strcpy(f,"AVERAGE");
if(b>=79&&b<89)strcpy(f,"GOOD");
if(b>=69)strcpy(f,"EXCELLENT");
d=getchar();
printf("%d %s %s\n",a,c,f);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-24
二维和一维在定义的时候进行初始化都不是必须的。它们都可以在程序的运行时进行输入赋值,或采用其他方式赋值。
第2个回答  2012-10-30
只能用strcpy赋值,不能用=赋值
第3个回答  2012-10-30
char c[20]="0",d;这句话有问题
相似回答