看看这个c语言题错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:39:23
#include <stdio.h>
main(){
char str[20];
str="i love you";
puts(str);
}
#include <stdio.h>
main(){
char *str;
str="i love you";
puts(str);
}
这样是可以的

正是因为要实现

char *str;
str="i love you";

所以才不允许

char str[20];
str="i love you";

/* 这样会修改数组的地址,但是数组的地址分配之后是不允许改变的 */

你不能这么赋值,可以这么

#include <stdio.h>
main(){
char str[20]="i love you";
puts(str);
}

这个字符数组不能这么赋值的~~~
或者你用键盘输入也好:

#include <stdio.h>
main(){
char str[20];
printf("Please input the list: ");
scanf("%s",str);
puts(str);

return 0;
}

你补充的那个可以,因为你那个是定义一个字符指针,然后"i love you"是一个字符串,你str="i love you"是指把字符串"i love you"这个字符串的首地址赋值给了str,这个当然是允许的了

C语言不能这样赋值: str="i love you";

sprintf(str, "i love you");

sorry
给数组赋值不能这样赋的,你的第二种当然没问题,因为它是字符指针

str在第一个中只是一个地址,没有办法如此赋值
可以这样写
char str[]="i love you";
不用考虑数组的大小,它会自动分配