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?”);