出于学术目的,我必须构建自己的atoi()和scanf()函数。
第一个很简单,但我遇到第二个问题。
第一个:
int String2Inteiro (char s[])
{
int j;
int i=0;
for(j=0; s[j]!= 0; j++)
{
i=i*10 + s[j] - '0';
}
return i;
}
现在在第二个我有一些问题,我认为这与停止条件有关。 我的第一次尝试是试图在cicle之后停止。
char dig;
int cont=0;
do
{
dig=getchar();
array[cont]=dig;
cont++;
} while (dig!= '\n');
第二次尝试是:
int counter=0;
char a;
char array[20];
while (a!='\n')
{
a=getchar();
vec[counter]=a;
counter=counter+1;
}
我不确定输入是否被很好地表示,或者我是否应该使用'\ 13'(CR的ASCII码)。
提前致谢,
安德烈
答案 0 :(得分:1)
一旦读取停止字符,就应该在循环中断开,而不是在将其添加到数组之后:
while (counter < sizeof(array)) { // Prevent buffer overflow
a = getchar();
if (a == '\n') {
array[counter] = 0; // Add trailing null to input string
break;
}
array[counter] = a;
counter++;
}