'Control reaches end of non-void function' 在 C 中
'Control reaches end of non-void function' in C
我正在尝试读取用户的输入。当我编译程序时,我收到消息,“控制到达非空函数的末尾[-Wreturn-type]
}'.
char *read_line(char *buf, size_t sz) {
while(fgets(buf, sz, stdin)) {
fputs(buf, stdout);
}
}
int main(int argc, char** argv) {
char *buf;
read_line(buf, 1024);
}
我希望程序接受用户的输入,按回车键,然后将他们的输入打印出来。我必须使用我使用过的方法来完成它(这是一些作业的一部分)。
我不完全了解 C 的幕后发生了什么,所以它只是导致了很多这样的问题:)。
对于初学者来说,该函数具有未定义的行为,因为它使用了一个未初始化的指针。
如果函数的 return 类型不为 void,则该函数应有一个 return 语句。
看来你的意思如下
#include <stdio.h>
void read_line( char *buf, size_t sz )
{
while( fgets(buf, sz, stdin) && buf[0] != '\n' )
{
fputs(buf, stdout);
}
}
int main( void )
{
enum { N = 1024 };
char buf[N];
read_line( buf, N );
}
或者类似下面的东西
#include <stdio.h>
char * read_line( char *buf, size_t sz )
{
if ( fgets(buf, sz, stdin) && buf[0] != '\n' )
{
return buf;
}
else
{
return NULL;
}
}
int main( void )
{
enum { N = 1024 };
char buf[N];
char *p = read_line( buf, N );\
if ( p != NULL ) fputs( p, stdout );
}
char *read_line(char *buf, size_t sz) {
while(fgets(buf, sz, stdin)) {
fputs(buf, stdout);
}
return buf;
}
我正在尝试读取用户的输入。当我编译程序时,我收到消息,“控制到达非空函数的末尾[-Wreturn-type] }'.
char *read_line(char *buf, size_t sz) {
while(fgets(buf, sz, stdin)) {
fputs(buf, stdout);
}
}
int main(int argc, char** argv) {
char *buf;
read_line(buf, 1024);
}
我希望程序接受用户的输入,按回车键,然后将他们的输入打印出来。我必须使用我使用过的方法来完成它(这是一些作业的一部分)。
我不完全了解 C 的幕后发生了什么,所以它只是导致了很多这样的问题:)。
对于初学者来说,该函数具有未定义的行为,因为它使用了一个未初始化的指针。
如果函数的 return 类型不为 void,则该函数应有一个 return 语句。
看来你的意思如下
#include <stdio.h>
void read_line( char *buf, size_t sz )
{
while( fgets(buf, sz, stdin) && buf[0] != '\n' )
{
fputs(buf, stdout);
}
}
int main( void )
{
enum { N = 1024 };
char buf[N];
read_line( buf, N );
}
或者类似下面的东西
#include <stdio.h>
char * read_line( char *buf, size_t sz )
{
if ( fgets(buf, sz, stdin) && buf[0] != '\n' )
{
return buf;
}
else
{
return NULL;
}
}
int main( void )
{
enum { N = 1024 };
char buf[N];
char *p = read_line( buf, N );\
if ( p != NULL ) fputs( p, stdout );
}
char *read_line(char *buf, size_t sz) {
while(fgets(buf, sz, stdin)) {
fputs(buf, stdout);
}
return buf;
}