c语言编程错误解析:这

/*是我写的一个很简单的关于用fgets读取输入,然后再把输入再输出的程式,可是就是不能输出我输入的字符,请问为什么,错在哪里?怎么改?*/
#include <stdio.h>
#include <conio.h>

#define BUFFER_LEN 256

int main(void)
{
char input[BUFFER_LEN];

printf("请输入字符\n:");
while(*fgets(input,BUFFER_LEN-1,stdin) != '\n');
printf("%s",input);
getch();
return 0;
}

第1个回答  2011-08-25
大多数情况下都是vc安装的问题

试试下面的方法吧:
Compiling...
Error spawning cl.exe

可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。.2404633

因此问题可以按照以下方法解决:点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
第2个回答  2011-08-25
首先fgets函数是从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream);
其中stream是一个文件指针,而在源程序中stdin根本就没有指向相应的文件流,所以你需要在while指向用stdin指定对应的文件流,对fgets的调用时不需要加 ‘*’ 了,而且返回值也不能与‘\n’比较,应该是与NOLL比较;如果你是简单的字符串读入的话,直接用gets()函数就能实现,
以下是修改后的函数:
#include <stdio.h>
#include <conio.h>

#define BUFFER_LEN 256

int main(void)
{
char input[BUFFER_LEN];

printf("请输入字符:\n");
//while(*fgets(input,BUFFER_LEN-1,stdin) != '\n');
gets(input);
printf("%s",input);
getch();
return 0;
}
第3个回答  2011-08-25
while那里有问题,退出不了循环,这样写就行了:
#include <stdio.h>
#include <conio.h>

#define BUFFER_LEN 256

int main(void)
{
char input[BUFFER_LEN];

printf("请输入字符:\n");
fgets(input,BUFFER_LEN-1,stdin);
printf("%s",input);
getch();
return 0;
}
第4个回答  2011-08-25
fgets函数功能本来就是获取一个以回车结尾的字符串
为何还要加一个while循环?
将while(*fgets(input,BUFFER_LEN-1,stdin) != '\n');
改成
fgets(input,BUFFER_LEN-1,stdin);
就可以达到你的目的了本回答被提问者采纳
第5个回答  2011-08-25
while(*fgets(input,BUFFER_LEN-1,stdin) != '\n');

把分号去了!!!
相似回答