PTA平台上的题目,用的是gcc编译的c语言程序,能帮我看看这是有什么问题吗?
题目:
题目要求:
本题目要求从键盘输入一个字符串s1,使用fputc函数按照一行方式存放到本地文件"1.txt"中。然后使用fgetc读取文件"1.txt"内容,保存到另一个数组s2中,再通过puts输出s2.
输入格式:
请在这里写输入格式。例如:输入在一行中给出一个长度不超过100的字符串。
输出格式:
请在这里描述输出格式。例如:对每一组输入,在一行中输出一个字符。
输入样例:
在这里给出一组输入。例如:
hello!
输出样例:
在这里给出相应的输出。例如:
hello!
我的代码:
#define _CRT_SECURE_NO_WARNINGS
#include
int main() {
FILE *p,*q;
char s1[100];
char s2[100];
scanf("%s",s1);
p = fopen("1.txt", "w");
for (int i = 0; s1[i] != '\0'; i++) {
fputc(s1[i], p);
}
fclose(p);
q = fopen("1.txt", "r");
int i = 0;
do {
s2[i++] = fgetc(q);
if (feof(q)) {
break;
}
} while (1);
s2[--i] = '\0';
fclose(q);
puts(s2);
return 0;
}
报错提示:
a.c: In function ‘main’:
a.c:7:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s",s1);
^~~~~~~~~~~~~~
警告信息,提示scanf()函数的返回值没有处理,修改如下,供参考:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main() {
FILE* p;
char s1[100] = { '\0' };
char s2[100] = { '\0' };
int ret;
ret = scanf("%s", s1);
if (ret == 1) {
p = fopen("1.txt", "w");
for (int i = 0; s1[i] != '\0'; i++) {
fputc(s1[i], p);
}
fclose(p);
p = fopen("1.txt", "r");
int i = 0;
while ((s2[i] = fgetc(p)) != EOF) i++;
s2[i] = '\0';
fclose(p);
puts(s2);
}
return 0;
}
scanf返回正确输入的个数,提示返回值没有使用。这个警告可以忽略。
要取消他可以用
int t=scanf()
或
if(scanf() ){}