C++。似乎不接受用户的输入

C++. Doesn't seem to take input from the user

本文关键字:用户 输入 不接受 C++      更新时间:2023-10-16

所以我是c++的新手。其思想是,它应该给用户两个选项,其中一个选项从用户读取输入。然而,它们实际上都没有从用户那里读取任何输入,而是直接跳到程序的末尾。任何帮助都是非常感激的!谢谢你。

(注意:我知道这与第一个'cin'取'number'有关)

#include <stdio.h>
#define SIZE 80
#include <iostream>
int main(void)
{
FILE * pFile;
int c; // variable to hold character input by user
char sentence[SIZE]; // create char array
char filename[SIZE]; //create filename array
int i = 0; // initialize counter i
int number;
std::cout << "Give a number. 1 for file. Anything else for standard.";
std::cin >> number;
std::cin.clear();

if(number==1)
{
    puts("Enter filename to append: ");
    while ((i < SIZE-1) && (c = getchar()) != 'n') {
    filename[i++] = c;}
    filename[i]= '';

    //fgetc(sentence,80,stdin);
    pFile=fopen(filename,"a");
    puts("Give a sentence to place in file:");
    while ((i < SIZE-1) && (c = getchar()) != 'n') {
    sentence[i++] = c;}
    sentence[i]= '';
    fputs(sentence,pFile);
    fclose(pFile);
    do {
      c = fgetc (pFile);
    } while (c != EOF);
    fclose (pFile);

}
else
{
    // prompt user to enter line of text
    puts("Enter a line of text:");
    // use getchar to read each character
    while ((i < SIZE-1) && (c = getchar()) != 'n') {
    sentence[i++] = c;}
    sentence[i]= '';
    // terminate string
    // use puts to display sentence
    puts("nThe line entered was:");
    puts(sentence);
}

}

我认为你必须从stdin中删除字符"enter"。试一试:

std::cin >> number;
getchar();

书写忽略(numeric_limits & lt;Streamsize>::max(), 'n');代替std::cin.clear()丢弃输入流中的所有内容,包括换行符。

#include <stdio.h> 
#include <iostream> 
#include <ios> // for <streamsize>
#include <limits> // for numeric_limits
#define SIZE 80
using namespace std;
int main(void) {
    FILE * pFile;
    int c; // variable to hold character input by user
    char sentence[SIZE]; // create char array
    char filename[SIZE]; //create filename array
    int i = 0; // initialize counter i
    int number;
    std::cout << "Give a number. 1 for file. Anything else for standard.";
    std::cin >> number;
    //std::cin.clear();
    cin.ignore(numeric_limits < streamsize > ::max(), 'n');
    if (number == 1) {
        puts("Enter filename to append: ");
        while ((i < SIZE - 1) && (c = getchar()) != 'n') {
            filename[i++] = c;
        }
        filename[i] = '';
        //fgetc(sentence,80,stdin);
        pFile = fopen(filename, "a");
        puts("Give a sentence to place in file:");
        while ((i < SIZE - 1) && (c = getchar()) != 'n') {
            sentence[i++] = c;
        }
        sentence[i] = '';
        fputs(sentence, pFile);
        fclose(pFile);
        do {
            c = fgetc(pFile);
        } while (c != EOF);
        fclose(pFile);
    } else {
        // prompt user to enter line of text
        puts("Enter a line of text:");
        // use getchar to read each character
        while ((i < SIZE - 1) && (c = getchar()) != 'n') {
            sentence[i++] = c;
        }
        sentence[i] = '';
        // terminate string
        // use puts to display sentence
        puts("nThe line entered was:");
        puts(sentence);
    }
}