C语言一个给char类型数组赋值问题。

2024-11-23 11:40:56
推荐回答(4个)
回答1:

输出的时候用

int i = 0;
for (i=0; i<10; i++) {
    printf("a[%d]=%c\n", i, a[i]);
}

防止缓冲区溢出可以用这样的:

fgets(a, sizeof(a), stdin);
a[strlen(a) - 1] = '\0';

回答2:

作为初学者,仅仅为了熟悉编程,程序中接受键盘输入方式很多,一样样来,虽然不建议使用scanf,但是你想用用看,就按你的思路吧,直接帮你转十进制数了,关于单个字符输出,zpl1986 说的很明了了。
一下是转10进制并输出的代码:
char a[10] = {0};
scanf("%s",a);

int lRes = 0;
for (int i = 0; (i < 10) && (a[i] != 0); i++)
{
if (('0' != a[i]) && ('1' != a[i]))
{
printf("input error\r\n");
break;
}
lRes <<= 1;
lRes += (a[i] - '0');
}

printf("Dec Res = %d\r\n", lRes);

回答3:

为什么你用gets和scanf("%s",a);呢,不对a加&,是因为a本身就是一个地址
为什么不用getc和scanf("%c",&a[0])进行一个个赋值呢

回答4:

你输出的时候用printf("%c",a[i]);而不要用printf("%s",a[i]);