#c
#c
Вопрос:
Мой код состоит в том, чтобы найти номер строки, а затем напечатать в нем весь элемент, но он выдает мусорное значение, и главное, что нужно сделать, это отделить переднюю строку как x и y соответственно, пожалуйста, помогите мне отделить x[] = [60,15,62…..] и y[] = [229,221,59,….]
Набор данных — это
60,229
15,221
62,59
96,120
16,97
41,290
52,206
...
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *myFile;
myFile = fopen("datasetLR1.txt", "r");
int count=0;
char c;
for (c = getc(myFile); c != EOF; c = getc(myFile)) {
if (c == 'n'){
count = count 1;
}// Increment count if this character is newline
}
int numberArray[count*2];
int i;
if (myFile == NULL){
printf("Error Reading Filen");
exit (0);
}
for (i = 0; i < count*2; i ){
fscanf(myFile, "%d,", amp;numberArray[i] );
}
for (i = 0; i < count*2; i ){
printf("Number is: %dnn", numberArray[i]);
}
fclose(myFile);
return 0;
}
Комментарии:
1.
if (myFile == NULL)
Я надеюсь, что это никогда не будет правдой, поскольку вы полностью проигнорировали проверку этого самого условия перед предыдущим циклом. Однако ваш файл находится в EOF при выходе из этого цикла, и вы ничего не сделали, чтобы изменить это условие (т. Е. Перемотать назад). И поскольку вашиfscanf
вызовы никогда не проверяются (возвращаемое значение этой функции предоставляется по какой-то причине; используйте его), ваш код не обращает внимания на2*count
количество неудачных сканирований из указателя файла, который все время находится в EOF .
Ответ №1:
После того, как вы подсчитаете количество строк в файле с помощью вашего первого цикла for, вы должны использовать rewind(myFile);
. Это возвращает вас к началу файла. Без этого вы считываете конец файла, который создает значения мусора. Кроме этого, ваш код работает нормально.
Вы также должны посмотреть на выполнение fscanf("%d,%dn", amp;x, amp;y);
, которое должно считывать оба числа одновременно (и новую строку) и присваивать им значения x и y соответственно. Это должно значительно упростить ваш код, однако ваш код отлично работает без него.
Комментарии:
1. вы имеете в виду ` amp;x, amp;y`