C++中的 scanf 错误 - 程序没有响应
scanf error in C++ - program doesn't respond
好吧,这很奇怪。当我从代码中删除CCD_ 1和CCD_,程序没有出错。此外,如果我删除scanf
而不删除count++;
程序与count++;
程序没有错误。他们与为什么会发生这种事?
#include <stdio.h>
#include <string>
#include <stdlib.h>
#include <math.h>
int IS_prime(int num) {
int isprime = 0;
for (int i = 2; i <= sqrt(num); i += 2) {
if (i % 2 == 0)
i++;
if ((int(num) % i) == 0) {
return isprime = 1;
break;
}
}
return isprime;
}
int main(int argc, char **argv) {
int a = 0;
char *buffer;
printf("Enter your sentence:n");
scanf("%[^n]", buffer);
char array[1000] = " ";
char temp[2] = " ";
int count = 1;
for (int i = 0; i < 100; i++) {
array[i] = buffer[i];
a = array[i];
int PrimeFind = IS_prime(a);
if (a % 2 == 0) {
printf("%c", a);
// Do nothing
} else if (PrimeFind == 0 && a % 1 == 0) {
printf("%c", a);
count++;
} else {
a++;
temp[0] = a;
printf("%c", a);
}
}
}
char *buffer;
printf("Enter your sentence:n");
scanf("%[^n]", buffer);
buffer
没有在那里初始化。它有一个"随机"值。(不确定是技术术语)。
更新
只是为了好玩,这里有一个C++版本:
在Coliru上直播
#include <iostream>
#include <cmath>
#include <algorithm>
bool is_prime(int num) {
if (num % 2 == 0)
return false;
for (int i = 3; i <= sqrt(num); i += 2)
if (num % i == 0)
return false;
return true;
}
int main() {
//// test your functions!
// for (int i = 1; i < 100; ++i) { if (is_prime(i)) std::cout << i << " "; } return 0;
std::cout << "Enter your sentence: ";
std::string line;
if (std::getline(std::cin, line)) {
std::string encoded;
size_t count = 0;
std::transform(
line.begin(), line.end(),
back_inserter(encoded),
[&count] (uint8_t ch) -> char {
if (ch % 2 == 0)
return ch; // Do nothing
if (is_prime(ch) && ch % 2 == 1) {
count++;
return ch;
}
return ch + 1;
});
std::cout << "Result: " << encoded << "n";
std::cout << "Count: " << count << "n";
}
}
当键入句子The lazy cow jumped over the seedy moon!
时,输出为:
Enter your sentence: The lazy cow jumped over the seedy moon!
Result: The lazz dpx jvmped pver the teedz mppn"
Count: 9
好的,这解决了问题。
我改了这个:
char *buffer;
printf("Enter your sentence:n");
scanf("%[^n]", buffer);
对此:
char buffer[100] = " ";
printf("Enter your sentence:n");
fgets(buffer, 100, stdin);
"scanf"有问题,但我搞不清楚。fgets运行良好。谢谢你的努力。
相关文章:
- 应用程序在打开的简历中捕获视频后没有响应
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- 问题导致程序停止响应,并且姓氏未正确打印
- Qt应用程序不响应鼠标和键盘事件
- 如何让 c++ 程序执行以响应文件打开
- 前和后条件用法。为什么程序不响应条件
- 当后端响应需要很长时间时,WXWIDGET应用程序会挂起
- 有没有一种方法可以测量桌面应用程序 UI 响应时间
- 在 UWP 应用程序中,future.wait() 在尝试同步来自异步方法的响应时继续等待
- X11应用程序在Ubuntu中未响应
- 编译的程序在其他窗口PC上停止响应
- 应用程序使用QMAP存储对象时停止响应
- Win32 中的 Sleep() 使程序无响应
- C++的新手,程序在取消引用向量的一部分时没有响应
- 处理Windows消息,以便我的应用程序正确响应
- 需要接受用户的响应才能执行程序
- Linux:应用程序响应能力和select()
- C++程序停止响应
- 矩阵的动态分配使程序不响应
- 应用程序的响应时间与给定时间段内输入触发器的数量不经意地相关