H
Hirulez
C++:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int num_input(double array[],int n,char* fname,int* flag)
{
char line[1024], *arr[n], *part, *ch;
int k,i=0;
FILE *test=fopen(fname,"r+");
if (strlen(fname))
{
if (!test)
{
*flag=1;
return (0);
}
}
for (k=0;k<n;k++)
{
if (strlen(fname))
{
if (feof(test)) break;
fgets(line, 1024, test);
}
else
{
fgets(line, 1024, stdin);
}
part = strtok (line," ");
while (part != NULL)
{
arr[i] = calloc (strlen(part)+1, sizeof(char));
strcpy(arr[i],part);
part = strtok (NULL, " ");
i++;
}
}
n=i;
for (i=0;i<n;i++){
printf("%s\n", arr[i]);
}
*flag=0;
if (strlen(fname))
{
if(fclose(test)) *flag=3;
}
return (0);
}
int main(){
double mass[10];
int i,x,k;
num_input(mass,10,"data.txt",&k);
if (k==1) printf("File data.txt does not exist. \n");
if (k==2) printf("Out of memory. \n");
if (k==0){
printf("Start program \n");
printf("Data from file data.txt: \n");
for (i=0;i<=9;i++ ){
printf("%f\n",mass[i]);
}
printf("flag = %d\n",k);
printf("End program. \n");
}
return 0;
}
Пример исходных данных:
1 2 3
4
5
должен получиться массив:
1
2
3
4
5
а у меня получается
1
2
3
4
5
т.е. пустые элементы, хотел убрать их НО!!! при сравнении это получается не пробел, не \n, не NULL.. пытался с помощью функции isspace тоже не дает она истинное значение..
P.S. надо вообщем как то убрать эти пустые места, ни прибегая к кардинальному изменению программы. т.е. только само считывание изменить, или как то дописать чтобы убрать эти места. надеюсь на вашу помощь. язык С т.е. просто С =)