2.从键盘输入若干行字符(每行长度不等),输入后把它们存储到一个磁盘文件中。
再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出 */
#include “stdio.h”
void main()
{
int i,flag;
char str[80],c;
FILE*fp;
fp=fopen(“text”,”w”);
flag=1;
while (flag==1)
{
printf (“input string:\n”);
gets(str);
fprintf(fp,”%s”,str);
printf(“continue?”);
c=getchar();
if ((c==”N”)||(c==”n”))
flag=0;
getchar();
}
fclose(fp);
fp=fopen(“text”,”r”);
while(fscanf(fp,”%s”,str)!=EOF)
{
for (i=0;str[i]!=”\0″;i++)
if ((str[i]>=”a”)&&(str[i]<=”z”))
str[i]-=32;
printf(“%s\n”,str);
}
fclose(fp);
}
这个在最后输出时为什么换行不起作用?还得加空格才能执行换行,应该要怎么改?
再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出 */
#include “stdio.h”
void main()
{
int i,flag;
char str[80],c;
FILE*fp;
fp=fopen(“text”,”w”);
flag=1;
while (flag==1)
{
printf (“input string:\n”);
gets(str);
fprintf(fp,”%s”,str);
printf(“continue?”);
c=getchar();
if ((c==”N”)||(c==”n”))
flag=0;
getchar();
}
fclose(fp);
fp=fopen(“text”,”r”);
while(fscanf(fp,”%s”,str)!=EOF)
{
for (i=0;str[i]!=”\0″;i++)
if ((str[i]>=”a”)&&(str[i]<=”z”))
str[i]-=32;
printf(“%s\n”,str);
}
fclose(fp);
}
这个在最后输出时为什么换行不起作用?还得加空格才能执行换行,应该要怎么改?
解决方案
5
试试 \r\n
5
好像没啥问题啊
10
#include <stdio.h>
int main() {
int i, flag;
char str[80], c;
FILE*fp;
fp = fopen("text", "w");
flag = 1;
while (flag == 1) {
printf("input string:\n");
gets(str);
fprintf(fp, "%s\n", str);
printf("continue?");
c = getchar();
if ((c == "N") || (c == "n"))
flag = 0;
getchar();
}
fclose(fp);
fp = fopen("text", "r");
while (fscanf(fp, "%s", str) != EOF) {
for (i = 0; str[i] != "\0"; i++)
if ((str[i] >= "a") && (str[i] <= "z"))
str[i] -= 32;
printf("%s\n", str);
}
fclose(fp);
return 0;
}
20
用 \r\n 代替 \n
10
gets(str);
fprintf(fp,”%s\n”,str);//后加\n即可
printf(“continue?”);
fprintf(fp,”%s\n”,str);//后加\n即可
printf(“continue?”);