为什么 fgets() 不接受 C 程序中的输入?
Why is fgets() not taking input in C program?
我在 C 中编写了代码来实现 Julias Caesar 密码学。
问题是我的 fgets() 没有等待输入,跳到 fputs()。
#include<stdio.h>
int main(){
int size;
printf("Enter the size of the string: ");
scanf("%d",&size);
int key;
printf("Enter the key: ");
scanf("%d",&key);
char a[size];
printf("Enter the string: ");
fgets(a,size,stdin);
for(int i=0;i<size;i++){
a[i]+=key;
}
fputs(a,stdout);
return 0;
}
我使用 CodeBlocks 17.12 编译了这个 C 程序。
我的 OS 是 Windows 7(32 位)
欢迎使用 Whosebug。
当您输入答案时,缓冲区中的末尾 (\n) 有一个换行符。当 fgets() 读取您的输入时,它会读取换行符。您可以删除换行符,或使用正则表达式跳过它,或在该行上使用 fgets() 一次,以便您可以再次使用 scanf() ,如 this other answer 中的建议,这可能对您有帮助。
而且,请记得在发布问题之前在 Whosebug 中进行搜索!
我在 C 中编写了代码来实现 Julias Caesar 密码学。
问题是我的 fgets() 没有等待输入,跳到 fputs()。
#include<stdio.h>
int main(){
int size;
printf("Enter the size of the string: ");
scanf("%d",&size);
int key;
printf("Enter the key: ");
scanf("%d",&key);
char a[size];
printf("Enter the string: ");
fgets(a,size,stdin);
for(int i=0;i<size;i++){
a[i]+=key;
}
fputs(a,stdout);
return 0;
}
我使用 CodeBlocks 17.12 编译了这个 C 程序。
我的 OS 是 Windows 7(32 位)
欢迎使用 Whosebug。
当您输入答案时,缓冲区中的末尾 (\n) 有一个换行符。当 fgets() 读取您的输入时,它会读取换行符。您可以删除换行符,或使用正则表达式跳过它,或在该行上使用 fgets() 一次,以便您可以再次使用 scanf() ,如 this other answer 中的建议,这可能对您有帮助。
而且,请记得在发布问题之前在 Whosebug 中进行搜索!