1.终端输出时间,输入“q”字符后结束
#include<stdio.h>
#include<time.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
void* callBack(void* arg) //此线程中输出时间
{
time_t t;
struct tm* info = NULL;
while (1)
{
system("clear");//清空终端
t = time(NULL);
info = localtime(&t);
if(NULL == info){
perror("localtime");
//return -1;
}
printf("%4d-%02d-%02d %02d:%02d:%02d\r",\
info->tm_year+1900,info->tm_mon+1,info->tm_mday,\
info->tm_hour,info->tm_min,info->tm_sec);
fflush(stdout);
sleep(1); //间隔1s输出一次
}
}
int main(int argc, char const *argv[])
{
char g;
//创建线程
pthread_t tid;
if(pthread_create(&tid,NULL,callBack,NULL) != 0){
fprintf(stderr,"pthread_create failed");
return -1;
}
while(1){
scanf("%c",&g); //监视输入
if('q' == g){
return 0; //有"q"输入时退出
}
}
//return 0;
}
2.定义一个全局变量char buf[] = "1234567",创建两个线程,不考虑退出条件
2.1 A线程循环打印buf字符串
2.2 B线程循环倒置buf字符串,即buf中本来存储1234567,倒置后buf中存储7654321,不打印
2.3 倒置不允许使用辅助数组
2.4 要求A线程打印出来的结果只能为1234567或者7654321
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
char buf[] = "123456789";
void* callBack(void* arg)
{
while(1){
printf("%s\n",buf); //循环打印buf
sleep(1);
}
}
int main(int argc, char const *argv[])
{
//创建线程
pthread_t tid;
if(pthread_create(&tid,NULL,callBack,NULL) != 0){
fprintf(stderr,"pthread_create failed");
return -1;
}
char tmp;
while(1)
{
int j = sizeof(buf)-2; //buf中有"/0"结束符 数组下标从0开始 所以-2
for(int i=0;i<j;i++){ //三杯水 逆置数组元素
tmp = buf[i];
buf[i] = buf[j];
buf[j] = tmp;
j--;
}
sleep(1);
}
return 0;
}