#include <stdio.h> #include <string.h> void NONO(); long fun( char *s ) { } int main() { char s[10]; long r; printf("请输入一个长度不超过9个字符的数字字符串: "); gets(s); r = fun( s ); printf(" r = %ld\n" , r ); NONO(); return 0; } void NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i; long r; char s[10], *p; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fgets(s, 10, fp); p = strchr(s, '\n'); if (p) *p = 0; r = fun(s); fprintf(wf, "%ld\n", r); } fclose(fp) ; fclose(wf) ; }
时间: 2024-03-09 09:45:21 浏览: 104
这段代码的`fun`函数没有给出具体实现,需要补充完成。根据题目要求,`fun`函数的功能是将一个数字字符串转换成与其面值相同的长整型整数。实现代码如下:
```c
long fun(char* s) {
long num = 0;
int len = strlen(s);
for (int i = 0; i < len; i++) {
num = num * 10 + (s[i] - '0');
}
return num;
}
```
该函数首先定义了一个变量`num`用于存储转换后的长整型整数,然后遍历输入的字符串`s`,将每一位数字转换成长整型整数。最后返回转换后的结果。
在`NONO`函数中,代码打开了两个文件`in.dat`和`out.dat`,分别用于输入数据和输出数据。`for`循环中读入文件中的每个数字字符串,并调用`fun`函数进行转换,将结果输出到`out.dat`文件中。最后关闭两个文件。
需要注意的是,`gets`函数已经被废弃,应该使用`fgets`函数代替,同时需要去掉换行符。完整代码如下:
```c
#include <stdio.h>
#include <string.h>
void NONO();
long fun(char* s);
int main() {
char s[10];
long r;
printf("请输入一个长度不超过9个字符的数字字符串: ");
fgets(s, 10, stdin);
if (s[strlen(s)-1] == '\n') {
s[strlen(s)-1] = '\0';
}
r = fun(s);
printf("r = %ld\n", r);
NONO();
return 0;
}
void NONO() {
FILE* fp, * wf;
int i;
long r;
char s[10], * p;
fp = fopen("in.dat", "r");
wf = fopen("out.dat", "w");
for (i = 0; i < 10; i++) {
fgets(s, 10, fp);
p = strchr(s, '\n');
if (p) *p = 0;
r = fun(s);
fprintf(wf, "%ld\n", r);
}
fclose(fp);
fclose(wf);
}
long fun(char* s) {
long num = 0;
int len = strlen(s);
for (int i = 0; i < len; i++) {
num = num * 10 + (s[i] - '0');
}
return num;
}
```
阅读全文