Я пытаюсь передать массив символов в функцию.Массив инициализируется вводом пользователя.Входные данные - это имя файла, которое будет открыто и прочитано в функции, чтобы определить, сколько целых чисел в файле соответствует целевому целевому значению пользователя (файл содержит только целые числа).Я получаю информацию от пользователя с помощью функции fgets ().Но когда я передаю массиву char с именем файла пользователя в функцию, я получаю NULL-указатель файла, хотя файл, который я пытался передать, находится в том же каталоге, что и мой исполняемый файл.
ТакжеЯ пытаюсь получить еще два ввода имени файла от пользователя для другой функции.Первый файл является исходным файлом, а второй файл является файлом назначения, в который будет скопировано содержимое первого файла.Я также использую fgets () для этого, но мой вывод, который запрашивает у пользователя второе имя файла, читается первым fgets (), который пытается прочитать первое имя файла.
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
int countOccurrences (const char* filename, const int target);
int copyFile(const char* src_file, const char* dest_file);
main()
{
printf("**********countOccurrences Test**********\n");
char buffer[15];
int userTarget;
printf("Enter input file name: ");
fgets(buffer, 15, stdin);
printf("Enter target: ");
scanf("%d", &userTarget);
int count = countOccurrences(buffer, userTarget);
printf("Occurrences of %d in \"%s\": %d\n", userTarget, buffer, count);
printf("\n**********copyFile Test**********\n");
char source[15];
char destination[15];
printf("Enter source file name: ");
fgets(source, 15, stdin);
printf("\nEnter destination file name: ");
fgets(destination, 15, stdin);
copyFile(source, destination);
return 0;
}
int countOccurrences (const char* filename, const int target)
{
FILE * numFile;
numFile = fopen(filename, "r");
if(numFile == NULL)
{
printf("Error opening file.\n");
exit(0);
}
int currentNum;
int targetCount = 0;
while(!feof(numFile))
{
fscanf(numFile, "%d", ¤tNum);
if(currentNum == target)
{
targetCount++;
}
}
fclose(numFile);
return targetCount;
}
int copyFile(const char* src_file, const char* dest_file)
{
FILE *source, *destination;
char c;
source = fopen(src_file, "r");
destination = fopen(dest_file, "w");
if((source == NULL) || (destination == NULL))
{
printf("Error opening file.\n");
return 0;
}
while(!feof(source))
{
c = fgetc(source);
fputc(c, destination);
}
fclose(source);
fclose(destination);
return 0;
}