二级考试试题??
25.下面各语句行中,能正是行赋字符串操作的语句行是 A)CHAR ST[4][5]={“ABCDE”}; B)CHAR S[5]={'A','B','C','D','E'}; C)CHAR *S;S=“ABCDE”; D)CHAR *S;SCANF(“%S”,S);
A为什么不对??
我认为只能选D
A首先题目要求的是“行”赋字符串,而在ST[4][5]字符串是这样排列的 st[0][0]='a' st[0][1]='b' st[0][2]='c' st[0][3]='d' st[0][4]='e' 很明显,不可能出来个st[0][5]来存放终止字符'\0',终止字符到了下一行st[1][0]='\0',所以不能算是行赋字符串(字符串没有'\0'怎么能叫字符串?)。举个例子: main() { char st[4][5]={"abcde"};
st[1][0]='x'; printf("%s",st); getch(); } 这样的程序输出的就是abcdex了。
B没有终止字符\0,所以不能算是个字符串
C那就更加荒谬了