我有一些代码用于更大的程序,它得到用户的输入,然后应该将该输入写入文件,但是在写入文件之前/期间,数据会以某种方式丢失。
list<MyData> mylist;
private void StartTransmit(ObservableCollection<WiresharkFile> files)
{
cancellationTokenSource = new CancellationTokenSource();
var token = cancellationTokenSource.Token;
Task.Factory.StartNew(() =>
{
try
{
Parallel.For(0, files.Count, new ParallelOptions { MaxDegreeOfParallelism = 5},
i =>
{
if (token.IsCancellationRequested)
return;
//do work...
files[i].ProcessFile();
});
}
catch (Exception e)
{ }
}, cancellationTokenSource.Token,
TaskCreationOptions.None,
TaskScheduler.Default).ContinueWith(
t =>
{
}
);
}
输出函数中的print语句输出与此图像类似的内容,无论输入
所以它会打印出所需的文字内容&#39;在这些内容以预期的方式使用之前,它然后用任何东西替换那些内容,并且只在文本文档中写入换行符,然后在下一个打印语句中,文本变成一个奇怪的重音字符(每次程序都是变化的)运行)。
所以我相信我错误地使用了指针,或者我以一种奇怪的方式从函数返回char数组。
答案 0 :(得分:0)
textPtr=input();
在函数input
返回时释放的堆栈上返回一个新指针,然后再次使用该内存(堆栈)。
要解决此问题,您必须将textPtr
作为input
input(textPtr);//the call
input(char * textPtr){//the function
fflush(stdin);//Clears the newline character left by any prevoius scanf statements
scanf("%[^\n]s",textPtr);
}