以下のコードは入力を要求し、後でそれを印刷することになっています。
しかし、私はいくつかの問題に遭遇しました。
データの保存とデータの読み取り(Cプログラミング)
問題
- プログラムは、私は、エントリを確認した後、作業を停止します。
- 入力を印刷することになっている場合は、奇妙な記号が印刷されます。
質問:
どのように私は、変数の値全体を印刷できますか?元については
: - ときI入力 "ジョン・レモン" それは "名:" を尋ねたときのために。
"John"の代わりに "John Lemon"を印刷することができます。変数の最初の値を印刷した後、変数の2番目の値と3番目の値を完全にどのように出力し続けますか?元については
:
サンプル出力
名:ジョンレモン
年齢:21
住所:41、2/2アップルストリート
私は何を行うことができますこの問題を解決するには?
可能であれば、私はCプログラミングを初めて学んだので、基本的に説明してください。
これが乱雑に見える場合は申し訳ありません。私は可能な限りシンプルに保つために最善を尽くしました。
#include<stdio.h>
char fname[]={"guest.dat"};
struct text
{
char name;
int age;
char address;
};
void printing()
{
struct text t1;
FILE *fp;
fp=fopen(fname,"r");
printf("\nName: %c",t1.name);
printf("\nAge: %d",t1.age);
printf("\nAddress: %s",t1.address);
}
int main()
{
FILE *fp;
int choice;
struct text t1;
fp=fopen(fname,"a+");
fread(&t1,sizeof(t1),1,fp);
printf("\nPlease enter name: ");
scanf("%c",&t1.name);
fflush(stdin);
printf("\nPlease enter age: ");
scanf("%d",&t1.age);
fflush(stdin);
printf("\nPlease enter address: ");
scanf("%s",&t1.address);
fflush(stdin);
printf("\nConfirm? (Y/N): ");
scanf("%c",&choice);
if (choice == 'y' | choice == 'Y')
{
fp=fopen(fname,"a+");
fwrite(&t1,sizeof(t1),1,fp);
fclose(fp);
fflush(stdin);
system("cls");
printing();
}
else if (choice == 'n' | choice == 'N')
{
fflush(stdin);
system("cls");
printing();
}
else
fflush(stdin);
system("cls");
printf("Please try again!");
system("pause");
}
何らかの理由で、初心者のチュートリアルでは、常にscanf経由でユーザーとの対話型の対話が必要な例があります。 scanfは使用するのが少し難しいですが、それはすぐに明らかではありませんなぜトリッキーです。 –
"C"の "char"型は、このコードを終了する前に、char配列の動作/ポインタとC – mou