我有一些麻煩從stdin複製一個字符串到一個緩衝區,該字符串的大小爲12個字符HS1234-0.txt供以後使用,這裏是我的代碼:將聊天覆制到緩衝區時出錯
while(1) {
sem_wait(&escsem);
pthread_mutex_lock(&esctrin);
char filename[12];
read(STDIN_FILENO,filename,12); //this is where I read from the stdin
lseek(STDIN_FILENO,13,SEEK_SET);
buffer[bufferpos]=filename; //this is where I try to copy
bufferpos=(bufferpos+1) % BUFFER_SIZE;
conta++;
pthread_mutex_unlock(&esctrin);
sem_post(&lesem);
}
這裏是我嘗試訪問它,但它口口聲聲說緩存[bufferpos]是空的,file_to_open也爲空
char* file_to_open;
while(1){
sem_wait(&lesem);
pthread_mutex_lock(&lertrin);
file_to_open=buffer[bufferpos];//this is where i try to copy the string
printf("buffer %s file %s\n",buffer[bufferpos],file_to_open);//and here it return null on both
bufferpos=(bufferpos+1) % BUFFER_SIZE;
conta++;
pthread_mutex_unlock(&lertrin);
sem_post(&escsem);
}
每個片段是由不同的線程和緩存使用宣佈爲
希望你能以某種方式幫助我感謝球員提前
char buffer [BUFFER_SIZE]; – DRC 2014-12-01 16:00:37
'buffer [bufferpos] =文件名; //這是我試圖複製的地方'那不會複製任何東西。這只是設置'buffer [bufferpos]'等於'filename',這是一個指針。 – 2014-12-01 16:24:06
我以爲他知道這一點,因爲緩衝區是一個'char *'類型的數組。 – Jite 2014-12-01 16:24:51