【问题标题】:C++. Doesn't seem to take input from the userC++。似乎没有接受用户的输入
【发布时间】:2016-10-04 03:32:36
【问题描述】:

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

(注意:我知道这与第一个“cin”输入“数字”有关)

#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]= '\0';



    //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]= '\0';
    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]= '\0';

    // terminate string
    // use puts to display sentence

    puts("\nThe line entered was:");
    puts(sentence);
}


}

【问题讨论】:

  • 不要越过溪流。使用iostreamfputs, fopen and family
  • 不确定您的意思?有点 C++ 的新手......
  • 另外,更喜欢std::string 而不是char 数组。
  • std::getlinestd::string 一起使用将解决您的很多问题。
  • 我还是迷路了。就像我说的,C++ 新手,这是我知道如何阅读句子或阅读文件的唯一方法。

标签: c++


【解决方案1】:

我认为您必须从标准输入中删除字符“输入”。试试:

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

【讨论】:

    【解决方案2】:

    编写 cin.ignore(numeric_limits ::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] = '\0';
    
            //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] = '\0';
            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] = '\0';
    
            // terminate string
            // use puts to display sentence
    
            puts("\nThe line entered was:");
            puts(sentence);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      相关资源
      最近更新 更多