私はゆっくりと C を学んでいます。文字列を扱う入力と出力に関するこのページを読みました: http://www.cprogramming.com/tutorial/c/lesson9.html
最後のコード例でfgets
は、変数への入力を取得して char 配列に割り当てるために使用されますname
。私は自分のプログラムに似たようなものを実装しようとしました。
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
/* This is my very first C program! */
bool test=true;
/* Function Prototypes */
int mult(int x, int y);
/* Structures */
struct Person {
int age;
char name[256];
};
/* Complicated Array ;P */
struct Person *FirstPeriod[22];
char FakeString[100];
void PracticeStrings()
{
int i;
fgets(FirstPeriod[0]->name, 256, stdin);
for (i=0;i<256;i++)
{
if (FirstPeriod[0]->name[i]=='\n')
FirstPeriod[0]->name[i]='\0';
}
printf("\n\nHello Student 0: %s",FirstPeriod[0]->name);
}
int main()
{
struct Person DadeLamkins;
DadeLamkins.age=16;
int numb;
int x;
int *numb_address=&numb;
numb_address=malloc(sizeof(*numb_address));
FirstPeriod[0]=&DadeLamkins;
if (true)
printf("-__- \n\n");
printf("Please enter a number: ");
scanf("%d", &numb);
switch (numb) {
case 0:
printf("Dude, 0 is lame...\n");
break;
case 7:
printf("Dude, 7 is my favorite number!\n");
break;
default:
printf("You entered %d\n", numb);
break;
}
for (x=0;x<numb+1;x++) {
printf("\n::# %d",mult(x,2));
}
printf("\n\n%d",numb_address);
free(numb_address);
numb_address=0;
PracticeStrings();
getchar();
return 0;
}
int mult (int x, int y)
{
return x*y;
}
26行目のPracticeStrings
関数が現在の問題です。コンパイルするとHello Student 0:
、入力を受け入れる前に表示されます(からfgets
)。Code::Blocks を使用してコンパイルしています。
どんな助けでも大歓迎です!
編集...
ははは、はい、私のプログラムが非効率的で非常にばかげていることは理解しています。お察しのとおり、実際にはあまり効果がありません。ほとんどの場合、コード例を実際に書き直すことなく、現在学んでいることを押し付けて適用しようとするものです (一語一句コピーすると何を学べますか?)。とにかく、助けてくれてありがとう!それは一理あると思います!私のチュートリアルがそれについて言及していないのは残念です。それは、もう少し高度な理解が必要なものだと確信しています。チュートリアルの作成者は、私が行ったように関数を混在させる人がいるとは思っていなかったに違いありません。
たくさんの人に感謝します!うまくいけば、私はこれに慣れることができます。私は多くのスクリプトを作成し、.net 言語で多くの作業を行ってきました。C
このリストに追加できることを願っています :)