一些基本知识:
到OP:为什么你把scanf函数的%2S格式说明?
------>它允许您只将字符串的前两个字符作为输出。 使用简单的scanf%s。
现在的答案:
填充字符数组,字符串:
在存储阵列(一个continguous内存块)看起来像这样
---------------------------------------------------------
| 't' | 'e' | 's' | 't' | '\0' | Rest all are also '\0' |
---------------------------------------------------------
0 1 2 4 5 6 7 8 9
和sizeof(阵列)会给你数组的大小,即10,因为char的size = 1。
sizeof(char * array)给出了数组的第一个元素的大小,即char(size = 1)。
所以,你会得到结果10.按照元素的大小划分数组的大小会给你整个块的大小。
为了得到填补数组的大小:
搜索数组中的第一个空字符。
int i=0;
for(i=0;i<10;i++)
{ if(name[i]==NULL) break; }
printf("Size is %d\n",i);
或者使用包含在string.h库中的strlen函数,它可以帮你实现。
#include <string.h> {......... printf("Size is %d\n",strlen(name));......}
因为name是test => scanf(“%2s”,name); //输入“test” – user1012535
我想在downvoting之前检查OP的声望点是很好的。根据OP,他没有答案并且已经尝试过并且在他的搜索中用错误的关键词进行探测 – rjv