c语言编程错误解析:这
/*是我写的一个很简单的关于用fgets读取输入,然后再把输入再输出的程式,可是就是不能输出我输入的字符,请问为什么,错在哪里?怎么改?*/#include<stdio....
/*是我写的一个很简单的关于用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;
} 展开
#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;
} 展开
5个回答
展开全部
大多数情况下都是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了。
试试下面的方法吧:
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了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先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;
}
其中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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fgets函数功能本来就是获取一个以回车结尾的字符串
为何还要加一个while循环?
将while(*fgets(input,BUFFER_LEN-1,stdin) != '\n');
改成
fgets(input,BUFFER_LEN-1,stdin);
就可以达到你的目的了
为何还要加一个while循环?
将while(*fgets(input,BUFFER_LEN-1,stdin) != '\n');
改成
fgets(input,BUFFER_LEN-1,stdin);
就可以达到你的目的了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(*fgets(input,BUFFER_LEN-1,stdin) != '\n');
把分号去了!!!
把分号去了!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询