c - 在输出文件中添加 0 在控制台中不可见

标签 c

我想了解为什么要在我的一个变量 userNumberInput 上添加一个零。在没有好的解决方案或解释的情况下,我一直试图弄清楚为什么会发生这种情况。它只发生在输出文件中,似乎不是因为变量设置为 0 而发生。

例如,如果您输入 90,控制台显示 90,但输出文件显示 900。

#include <stdio.h>
#include <stdlib.h>
void Fibonacci (int userInputNumber);
void UserInput (int* userInputNumber);

FILE *fpOut;
int main(int argc, const char * argv[]) {
//Creating global variable for userInput to be passed from function to function
int userInputNumber = 0;

//Opening file for writing output to
if (!(fpOut = fopen("csis.txt", "w"))) {
    printf("csis.text could not be opened for output");
    exit(1);
}

//Calling two functions and passing appropriate vaiables to each
UserInput(&userInputNumber);
Fibonacci(userInputNumber);

fclose(fpOut);
return 0;
}

void UserInput (int* userInputNumber) {
//Asks the user for a number for the generator
printf("Enter a number into the Fibonacci Generator: ");
scanf("%d", &*userInputNumber);
fprintf(fpOut,"Enter a number into the Fibonacci Generator: %d", *userInputNumber);

//While the user continues to enter a negative number it forces the user to enter a new number
while (*userInputNumber < 0) {
    printf("Invalid user input, enter a positive number\n\n");
    fprintf(fpOut,"Invalid user input, enter a positive number\n\n");
    printf("Enter a number into the Fibonacci Generator: ");
    scanf("%d", &*userInputNumber);
    fprintf(fpOut,"Enter a number into the Fibonacci Generator: %d", *userInputNumber);
}
}

void Fibonacci (int userInputNumber) {
//Defines variables used in this function
int firstNumber, secondNumber, i, seriesNumber, length;
firstNumber = 0;
secondNumber = 1;
seriesNumber = 0;
i = 0;
length = 0;

//For loop that adds the two previous number in the series and prints it and then updates the previous numbers
for (i = 0; seriesNumber < userInputNumber; i++) {
    if (i <= 1) {
        seriesNumber = i;
        length++;
    } else {
        seriesNumber = firstNumber + secondNumber;
        firstNumber = secondNumber;
        secondNumber = seriesNumber;
        length++;
    }

    //Statement to break the loop when the next number in the series goes above the user input
    if (seriesNumber > userInputNumber) {
        length -= 1;
        break;
    }

    //Printing the sequence
    printf("%d\n",seriesNumber);
    fprintf(fpOut,"%d\n",seriesNumber);
}

//Printing the length of the sequence
printf("Length of the sequence: %d", length);
fprintf(fpOut,"Length of the sequence: %d", length);
}

最佳答案

您必须在打印输入的值后打印一个换行符,或者 0(序列的第一项)似乎附加到输入中。

尝试改变两者

fprintf(fpOut,"Enter a number into the Fibonacci Generator: %d", *userInputNumber);

fprintf(fpOut,"Enter a number into the Fibonacci Generator: %d\n", *userInputNumber);

关于c - 在输出文件中添加 0 在控制台中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36075710/

相关文章:

C: 当我将值放在括号中时,打印 %c 不起作用

c - 如何制作一个适合标准输入字符串的数组?

c - 发生错误时如何在makefile中同时退出并记录文件中的数据

c - 为什么不在这里释放 calloc() 的内存(YOLO)

c++ - size of datatype 和 sizeof(data type) 的区别

c - 如何在代码块中使用C打开记事本?

C 外部和指针

java - 打印出从 Java 接收到的字节到 C

c - 消息队列fork + execlp + ftok的用法

c - 如何给指针起别名