出于学术目的,我必须构建自己的 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 代码)。
提前致谢
安德烈
最佳答案
您应该在读取停止字符后立即跳出循环,而不是在将其添加到数组之后:
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++;
}
关于c - 构建我自己的 scanf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25952801/