我正在尝试捕获通过stdin流输入的所有字符(EOF 除外)。我想输入一个多行文本:每行\n末尾。
int getline(char s[])
{
printf("Call-getline()\n");
int c;
int idx=0;
while((c=getchar()) != EOF)
{
s[idx++] = c;
}
printf("\n-EOF found--\n");
s[idx] = '\0';
return idx;
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何摆脱\n按 Enter 时得到的那个,我想知道shif+entervs 是否enter alone有什么不同。我阅读了它在 Microsoft Word 中的作用:新段落与换行符。
所以我希望我的程序读取一个输入,它在一行中有一些整数,例如:
1 1 2
然后它应该分别读取每个整数并以新行打印它.程序必须读取的整数数量不是事先给出的,所以我要做的是使用while循环,在没有更多的整数读取之后结束.这是我写的代码:
while (scan.hasNextInt()) {
int x = scan.nextInt();
System.out.println(x);
}
Run Code Online (Sandbox Code Playgroud)
但它没有正常工作,因为循环永远不会结束,它只是希望用户输入更多的整数.我在这里错过了什么?
我写了一个程序来通过XOR加密给定的消息.它有效,但它没有结束.这是代码.(我创建了3个文件):
encrypt.h:
void encrypt(char *message);
Run Code Online (Sandbox Code Playgroud)
message_hider.c:
#include <stdio.h>
#include "encrypt.h"
int main() {
char msg[80];
while (fgets(msg, 80, stdin)){
encrypt(msg);
printf("%s", msg);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
encrypt.c:
#include "encrypt.h"
void encrypt(char *message) {
while (*message) {
*message++ ^= 0x1f;
}
}
Run Code Online (Sandbox Code Playgroud)
正如我上面提到的,它有效.但我无法阻止它.当我按下Ctrl + D来停止它(在cmd中)它也加密它.(我需要在加密消息后停止此代码).请解释一下这个案子.
我正在使用C++ Primer一书学习C++.
在1.4.3节中,给出了以下关于读取未知数量输入的示例代码.
#include <iostream>
int main()
{
int sum = 0, value = 0;
// read until end-of-file, calculating a running total of all values read
while (std::cin >> value)
sum += value; // equivalent to sum = sum + value
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据书中我们给出的输入3 4 5 6,输出将是Sum is: 18
但是当我在我的计算机上尝试这个(带有mingW的Windows 10)时,代码并没有结束.即使我输入换行符,它也会继续询问输入.它仅在我输入非int输入时才有效f.
这是预期的吗?如果是,是否有任何代码在输入换行符后停止?
我对c ++很陌生,而且我已经学过python,所以这么早就陷入困境是非常令人沮丧的.
感谢致敬.
我想将几个整数作为输入,直到出现换行符('\n',而不是 EOF),然后将它们放入 anarray或 a 中vector。如何使用 C++ 独有的关键字来做到这一点?