我有一个C分配,我们使用长度为10的数组将字符存储到其中。教授指出了我们不能使用null来指定数组结尾的观点。该数组用于保存一个名称,我们从stdin中读取。名称大于10个字符时,我们将其打印出来太长。到目前为止,这是我的代码,它不起作用,因为当我按Enter提交名称时,它使用该字符作为字符,并且在发生任何事情之前我必须加到10,这导致它说名称太长了,这不是理想的结果。
int main( void )
{
printf( "What's your name: " );
// Storage for a name, as an array of characters without a null
// marking the end.
char name[ 10 ];
int len = 0;
char ch = getchar();
while((ch != EOF) || (ch != '\n')) {
name[10] = name[10] + ch;
ch = getchar();
len++;
if(len > 10) {
printf("That name is too long.");
}
}
printf("Hello ");
for(int i = 0; i < len; i++) {
printf("%c", name[i]);
}
printf(".\n");
return 0;
}
我认为这是您的目标程序:
int main( void )
{
// Storage for a name, as an array of characters without a null marking the end.
char name[ 10 ];
int len = 0;
printf( "What's your name: " );
ch = getchar();
while((ch != EOF) || (ch != '\n'))
{
name[len] = ch;
len++;
if(len > 10) {
printf("That name is too long.");
}
ch = getchar();
}
name[len]='\0';
printf("Hello ");
for(int i = 0; i < len; i++) {
printf("%c", name[i]);
}
printf(".\n");
return 0;
}
这里name[len]='\0';
用于终止您的char数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句