Tôi bắt gặp một cái gì đó thực sự kỳ lạ khi tôi viết một chương trình xổ số nhỏ trong C++ được gọi là "lotto.cpp". Mọi thứ đều ổn cho đến khi tôi viết file ghi cho chương trình của mình. Khi tôi biên soạn, nó chỉ cho tôi những lỗi sau:Tại sao tên của tệp nguồn ảnh hưởng đến biên dịch?
ld: can't open output file for writing: lotto, errno=21 for architecture x86_64
collect2: ld returned 1 exit status
Bằng cách trùng hợp ngẫu nhiên, tôi đã thay đổi tên của chương trình của tôi để "1.cpp", và tất cả của một đột ngột nó biên dịch không có vấn đề. Nó cũng làm việc khi tôi đổi tên thành "test.cpp".
Tôi thực sự tò mò là tại sao điều này lại xảy ra. Bất kỳ ý tưởng?
Điều này đã xảy ra trên MacBook Pro.
Nếu bạn muốn mã, hãy cho tôi biết!
Tôi biết một số người đã yêu cầu mã. Dưới đây là:
#include <iostream>
#include <fstream>
using namespace std;
const int NED = 10;
const int VIKING = 6;
const int NORMAL = 7;
const int MAX = 10;
void quickSort(int arr[], int left, int right);
int checkDuplicates(int arr[], int length);
int main (int argc, const char *argv[])
{
int i, j, k, ans;
char ans2;
int lottoNumbers[MAX];
ofstream out("Lotto.txt", ios::out | ios::app);
srand((unsigned)time(NULL));
do
{
do
{
cout << "\n\nDo you want to play Viking Lotto (press 6), or normal Lotto (press 7): ";
cin >> ans;
}while(ans != VIKING && ans != normal);
(ans == VIKING) ? cout << "\nViking Lotto:\n" : cout << "\n\nnormal Lotto:\n";
(ans == VIKING) ? out << "\nViking Lotto:\n" : out << "\n\nnormal Lotto:\n";
for (i = 0; i < NED; i++) //10 rows
{
for (j = 0; j < ans; j++) //6 or 7 columns
{
(ans == VIKING) ? lottoNumbers[j] = (rand() % 48) + 1 : lottoNumbers[j] = (rand() % 34) + 1;
}
if(checkDuplicates(lottoNumbers, ans) != -1)
{
for(k = 0; k < ans; k++)
{
while(checkDuplicates(lottoNumbers, ans) == lottoNumbers[k])
{
(ans == VIKING) ? lottoNumbers[k] = (rand() % 48) + 1 : lottoNumbers[k] = (rand() % 34) + 1;
}
}
}
quickSort(lottoNumbers, 0, ans - 1);
cout << '\n';
for(j = 0; j < ans; j++)
{
cout << lottoNumbers[j] << '\t';
out << lottoNumbers[j] << '\t';
}
out << '\n';
}
cout << "\n\n";
cout <<"Another lottery ticket (Y/N) ";
cin >> ans2;
}while(ans2 == 'j' || ans2 == 'J');
cout << "\n\nLOTTO NUMBERS WAS WRITTEN TO FILE...\n\n";
return 0;
}
void quickSort(int arr[], int left, int right)
{
int i = left, j = right;
int tmp;
int mid = arr[(left + right)/2];
while (i <= j)
{
while (arr[i] < mid) i++;
while (arr[j] > mid) j--;
if (i <= j)
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
if (left < j) quickSort(arr, left, j);
if (i < right) quickSort(arr, i, right);
}
int checkDuplicates(int arr[], int length)
{
for(int i = 0; i < length; i++)
{
for(int j = i + 1; j < length; j++)
{
if(arr[i] == arr[j]) return arr[j];
}
}
return -1;
}
Vui lòng cung cấp mã. Có vẻ như bạn đang chỉnh sửa tệp mà không có quyền. – beta0x64
Ngoài ra, vui lòng cung cấp cấu trúc thư mục của bạn (tên của thư mục và tệp bên trong) – beta0x64
Lỗi 21 trong '/ usr/include/sys/errno.h' là' EISDIR', bạn đang cố viết thư mục? – Gaius