我慢慢学习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