我是编程新手。在做我的大学项目时,我遇到了一个问题。我的目标是制作一个总计大数字的程序(超过20个字符,少于100个)。它们应该在.txt文件中以空格划分。 问题是,在分割这些数字后,我只能获得第一个数字;第二个变成了一些奇怪的字符(đv1)。 如果有人能帮助我,我真的很感激。
int il_w = 4;
char * split(int w, int k)
{
char const* const fileName = "Numbers.txt";
FILE* file = fopen(fileName, "r");
char linia[256];
char * pch = '\0';
int i = 0;
for(i = 0; i < w + 1; i++)
fgets(linia, sizeof(linia), file);
i = 0;
pch = strtok (linia, " ");
while (i < k)
{
pch = strtok (NULL, " ");
i++;
}
fclose(file);
return pch;
}
int compare(char * a, char * b)
{
printf("%s ", a);
printf("%s", b);
//a > b -> 0, a < b -> 1, a = b -> 2
if(strlen(a) > strlen(b))
return 0;
else if(strlen(a) < strlen(b))
return 1;
else
{
int i = 0;
for(i = 0; i < strlen(a); i++)
{
int anum = atoi(a[i]);
int bnum = atoi(b[i]);
if (anum > bnum)
return 0;
else if (anum < bnum)
return 1;
else
continue;
}
return 2;
}
}
int main()
{
int i = 0;
while(i < il_w)
{
char * number1 = split(i, 0);
printf("%s \n", number1);
char * number2 = strtok(split(i, 1), "\n");
printf("%s \n", number2);
printf("%d \n", compare(number1, number2));
i++;
}
return 0;
}