undefined reference to symbol fflush@@GLIBC_2.17
时间: 2023-10-12 18:13:08 浏览: 77
这个错误通常是因为编译器没有链接正确的库。fflush函数属于C标准库,因此需要链接libc库。
你可以尝试在编译命令中添加"-lc"选项,即:
```
gcc your_program.c -o your_program -lc
```
如果你使用的是C++编译器,需要在命令中添加"-lstdc++"选项,即:
```
g++ your_program.cpp -o your_program -lstdc++
```
如果仍然无法解决问题,可能是因为你的系统缺少libc库。你可以尝试安装libc库,例如在Ubuntu系统上,运行以下命令:
```
sudo apt-get install libc6-dev
```
希望能帮助到你。
相关问题
json_to_sheet怎么设置表头
#include <stdio.h>
int guess(int x);
void solve(){
int digit[4] = {0, 1, 2, 3}; // initialize the digits
int a = 0, b = 0, chance = 10;
do {
int num = digit[0] * 1000 + digit[1] * 100 + digit[2] * 10 + digit[3];
a = guess(num);
if (a == 4) return; // win
b = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (i == j) continue;
if (digit[i] == digit[j]) continue;
int num = digit[i] * 1000 + digit[j] * 100 + digit[(i+j)%4] * 10 + digit[(i+2*j)%4];
int ta = 0, tb = 0;
ta = guess(num);
if (ta == a) {
for (int k = 0; k < 4; k++) {
if (k == i || k == j) continue;
for (int l = 0; l < 4; l++) {
if (k == l || l == i || l == j) continue;
if (digit[k] == digit[l]) continue;
int num = digit[k] * 1000 + digit[l] * 100 + digit[(k+l)%4] * 10 + digit[(k+2*l)%4];
tb = guess(num);
if (tb == b) break;
}
if (tb == b) break;
}
if (tb != b) {
b = tb;
digit[0] = i;
digit[1] = j;
digit[2] = (i+j)%4;
digit[3] = (i+2*j)%4;
}
}
}
}
chance--;
} while (chance > 0);
}
// the following code is for testing
int ans;
int guess(int x){
if (x < 0 || x > 9999) return -1;
int digit[10] = {0};
int a = 0, b = 0;
for (int i = 0; i < 4; i++) {
digit[x%10]++;
x /= 10;
}
for (int i = 0; i < 4; i++) {
if (ans%10 == x%10) a++;
if (digit[ans%10] > 0) b++;
ans /= 10;
x /= 10;
}
b -= a;
printf("%d %d\n", a, b);
fflush(stdout);
return a;
}
int main(){
scanf("%d", &ans);
solve();
return 0;
}
fflush
fflush 是 C 标准库中的一个函数,用于将缓冲区中的数据立即输出或者清空缓冲区。fflush 的原型为:
```c
int fflush(FILE *stream);
```
其中 stream 参数表示要刷新的文件流,如果 stream 为 NULL,则刷新所有输出流。fflush 返回值为 0 表示成功,返回 EOF 表示失败。
一般情况下,当我们使用 printf 或者 fprintf 等输出函数输出数据时,数据会先被缓存在内存中,等到缓冲区满了或者程序结束时才会被输出。如果我们希望立即将数据输出到终端或者文件,可以调用 fflush 函数来刷新缓冲区。