Closed. This question is
off-topic。它当前不接受答案。
想改善这个问题吗?
Update the question,因此它是
on-topic,用于堆栈溢出。
3年前关闭。
今天,我尝试在Linux Mint上练习使用C语言编写文本文件,但是它不起作用(文本不显示)。请帮我解决。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int account;
char name[30];
float balance;
FILE *fp;
if((fp = fopen("tin", "w")) == NULL) {
printf("File could not be opened\n");
exit(1);
}
else {
printf("Enter the account, name, and balance.\n");
printf("Enter EOF to end input.\n");
printf("?");
scanf("%d%s%f", &account, name, &balance);
while(!feof(stdin)) {
fprintf(fp, "%d %s %2.f\n", account, name, balance);
printf("?");
scanf("%d%s%f", &account, name, &balance);
}
fclose(fp);
}
return 0;
}
当我在终端上运行此代码时,我得到
非常感谢你。
考虑使用fgets捕获输入,并使用sscanf解析输入。检查sscanf返回是否成功。这允许输入空行来终止程序。比EOF更方便。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 256
int main()
{
int account;
char name[30];
char input[SIZE];
float balance;
FILE *fp;
if((fp = fopen("tin", "w")) == NULL) {
printf("File could not be opened\n");
exit(1);
}
else {
do {
printf("Enter the account, name, and balance.\n");
printf("Enter at ? to end input.\n");
printf("?");
if ( fgets ( input, SIZE, stdin)) {
if ( ( sscanf ( input, "%d%29s%f", &account, name, &balance)) == 3) {
printf ( "adding input to file\n");
fprintf(fp, "%d %s %2.f\n", account, name, balance);
}
else {
if ( input[0] != '\n') {
printf ( "problem parsing input\nTry again\n");
}
}
}
else {
printf ( "problem getting input\n");
exit ( 2);
}
} while( input[0] != '\n');
fclose(fp);
}
return 0;
}
我是一名优秀的程序员,十分优秀!