Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法获取返回值_C++ - Fatal编程技术网

C++ 无法获取返回值

C++ 无法获取返回值,c++,C++,我正在使用此函数读取记事本文件并将数据填入char str[255]中,但执行此函数后str仍然为空 char str[255]; char* data_pull() { std::ifstream in("C:/myfile.txt"); if(!in){ printf("\nCannot open the file"); exit (1); } while(in){ in.getline(str, 255);

我正在使用此函数读取记事本文件并将数据填入char str[255]中,但执行此函数后str仍然为空

char str[255];

char* data_pull()
{
    std::ifstream in("C:/myfile.txt");
    if(!in){
        printf("\nCannot open the file");
       exit (1);
    }

    while(in){
        in.getline(str, 255);  
       printf(str);
    }

    in.close();
    return str;
}
使用in.getlinestr,255;您一直在为输入文件中的每一行覆盖str:换句话说,每一行都将覆盖存储在str中的前一行

如果文件以空行结尾,则str将在循环末尾存储一个空字符串。

with in.getlinestr,255;您一直在为输入文件中的每一行覆盖str:换句话说,每一行都将覆盖存储在str中的前一行


如果文件以空行结尾,则str将在循环末尾存储一个空字符串。

printfstr的输出是什么?顺便说一句,对于从外部输入读取的str,不要使用printfstr,因为str可能包含像%s这样的格式代码,最好使用putsstr或printf%s,str。您如何看到返回的字符串是空的?除了一个问题:文本中的最后一行是空行吗?printfstr给了我正确的输出,但是当我在其他函数中使用str时,我知道str是空的empty@sumitkang:这是因为文件以空行结尾,所以str中存储的最后一个值就是那一空行。这里没什么奇怪的。printfstr的输出是什么?顺便说一句,对于从外部输入读取的str,不要使用printfstr,因为str可能包含像%s这样的格式代码,最好使用putsstr或printf%s,str。您如何看到返回的字符串是空的?除了一个问题:文本中的最后一行是空行吗?printfstr给了我正确的输出,但是当我在其他函数中使用str时,我知道str是空的empty@sumitkang:这是因为文件以空行结尾,所以str中存储的最后一个值就是那一空行。这里没什么奇怪的,不太正确;我在一个最后一行非空的文件上测试了代码,但缓冲区仍然是空的。@csl:您使用的文件最后一行是空的。你根本没有意识到这一点。如果文件中的最后一行以特定于平台的行尾标记结束,如Windows上的CR+LF,则文件中还有一行是空的,后面是。如果要创建一个具有真正非空的最后一行的文件,则需要一个在最后一行末尾没有行尾标记的文件,如SomeData。你试过了吗?@AndreyT vim没有显示任何尾随的换行符,但可以肯定的是,echo-ne hello\nworld>测试工作正常。谢谢,不太正确;我在一个最后一行非空的文件上测试了代码,但缓冲区仍然是空的。@csl:您使用的文件最后一行是空的。你根本没有意识到这一点。如果文件中的最后一行以特定于平台的行尾标记结束,如Windows上的CR+LF,则文件中还有一行是空的,后面是。如果要创建一个具有真正非空的最后一行的文件,则需要一个在最后一行末尾没有行尾标记的文件,如SomeData。你试过了吗?@AndreyT vim没有显示任何尾随的换行符,但可以肯定的是,echo-ne hello\nworld>测试工作正常。谢谢