寫了一個簡單的加法計算器小程式,總共有getline.c、isspace.c、isdigit.c、atof.c、main.c
但是在編譯main.c時總是顯示無法鏈接getline函式,只有把getline函式加到main.c后面才能正常編譯運行,請教一下各位大佬。
報錯:

main.c
/* 簡易的加法計算器 */
#include<stdio.h>
#define MAXLINE 100
double atof(char s[]);
int getline(char s[], int max);
int main(void)
{
char line[MAXLINE];
double sum = 0;
while(getline(line, MAXLINE) > 0){
printf("The sum is %f.\n", sum += atof(line));
}
return 0;
}
// 不加上就會報錯!!
/* 獲取一行的字串,將其儲存在陣列s中,最大不超過max */
/* int getline(char s[], int max)
{
int i, a;
for(i = 0; (a = getchar()) != '\n' && max >= 0; i++, max--){
s[i] = a;
}
if (a == '\n')
{
s[i++] = a;
}
s[i] = '\0';
return i;
} */
isspace.c
/*
如果s為空格,則回傳1,否則回傳-1
*/
int isspace(char s)
{
if (s == ' ')
{
return 1;
}
return 0;
}
isdigit.c
// 判斷a是否為數字,如果是則回傳1,否則回傳-1
int isdigit(int a)
{
if ('0' <= a <= '9')
{
return 1;
}
return -1;
}
atof.c
/* 將字串轉換為數字,例如:”123“轉換為double型別的 123 */
#include<math.h>
int isspace(char a);
int isdigit(char a);
double atof(char s[])
{
int i, sign;
double val;
for(i = 0; isspace(s[i]); i++)
;
sign = (s[i] == '-')? -1 : 1;
if (s[i] == '-' || s[i] == '+')
i++;
for(; isdigit(s[i]); i++){
val = 10.0*val + (s[i] - '0');
}
if (s[i++] == '.')
{
int k = 1;
for(; isdigit(s[i]); i++)
val = val + (s[i] - '0')/(pow(10, k));
}
return val;
}
getline.c
/* 獲取一行的字串,將其儲存在陣列s中,最大不超過max */
#include <stdio.h>
int getline(char s[], int max)
{
int i, a;
for(i = 0; (a = getchar()) != '\n' && max >= 0; i++, max--){
s[i] = a;
}
if (a == '\n')
{
s[i++] = a;
}
s[i] = '\0';
return i;
}
uj5u.com熱心網友回復:
系統也提供了一個getline函式,同名沖突了,不知道要鏈接哪一個?你放在main里,自然就是取同一檔案下的函式。uj5u.com熱心網友回復:
換了名字還是不行,鏈接缺失undefined reference to `getLINE_N'
collect2.exe: error: ld returned 1 exit status
uj5u.com熱心網友回復:
是我宣告的問題嗎?uj5u.com熱心網友回復:
換了名字還是不行
uj5u.com熱心網友回復:
https://blog.csdn.net/qq_36965134/article/details/82190801轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/8164.html
標籤:C語言
上一篇:請問為什么運行超時?
下一篇:vs2013 ultimate 編譯mfc寫的程式,提示要安裝vc_mbcsmfc.exe,安裝這個插件提示沒有庫,再就是提示正在運行
