我慢慢學習C.我閱讀此頁有關輸入和處理字符串輸出這裏:http://www.cprogramming.com/tutorial/c/lesson9.html「與fgets」運行「的printf」
在過去的代碼示例,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
到這個列表:)
'INT * numb_address = &numb; numb_address = malloc的(的sizeof(* numb_address));' - >'INT * numb_address = malloc的(的sizeof(麻木));' – Ryan 2012-04-09 23:38:50
@minitech,是的,良好的通話。我主要是爲了學習目的而慢慢地在同一個項目上建設。我一直在使用其他語言進行編程,但我想確保我能夠輕鬆掌握這些基礎知識。 – FreeSnow 2012-04-09 23:42:33
有趣的學習。當用戶學會使用fgets等時,你對「\ n」所遇到的問題是極其常見的。如果它完成了對你的更多瞭解,我會說程序有很多功能; P - 另外;因爲您使用的是CodeBlocks(我推薦使用純控制檯開始)啓用警告。即對於GCC:Settings-> Compiler and debugger - > [Compiler Flags] [Categories-> Warnings]:Check -Wall,-Wextra,-pedantic。 – Morpfh 2012-04-10 01:53:25