想請問我自己看課本輸入程式但後面為甚麼文字無法輸出阿!![https://ithelp.ithome.com.tw/upload/images/20210623/20138522AvvqO0wq0t.jpg]
#include<stdio.h>
#include<stdlib.h>
#include <ctype.h>
int main(void)
{
FILE *stream1;
FILE *stream2;
char string[10];
stream1=fopen("olddata.txt","r");
stream2=fopen("newdata.txt","w");
if ((stream1 == NULL) || (stream2 == NULL))
{
printf("檔案開啟失敗\n");
return 0;
}
else
{
while (fscanf(stream1,"%s",string)!=EOF)
{
string[0]=toupper(string[0]);
fprintf(stream2,"%s",string);
}
fclose(stream1);
fclose(stream2);
}
return 0;
}
看起來
你的程式寫的是
1.讀 olddata.txt
2.將第一個字母大寫
3.寫到 newdata.txt
所以
你應該看 newdata.txt 的內容是否是預期的結果
我測試可以成功執行的 code。
建議你用 printf() 印出讀到的東西來 debug,
不然就用 debug tool 來做 debug。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
FILE *stream1 = NULL;
FILE *stream2 = NULL;
char string[10];
stream1 = fopen("olddata.txt", "r");
stream2 = fopen("newdata.txt", "w");
if((stream1 == NULL) || (stream2 == NULL))
{
printf("檔案開啟失敗\n");
}
else
{
while(fscanf(stream1, "%s", string) != EOF)
{
if(strlen(string) > 0)
string[0] = toupper(string[0]);
printf("%s\n", string);
fprintf(stream2, "%s\n", string);
}
fclose(stream1);
fclose(stream2);
}
return 0;
}