我正在製作一個程序,它將congress.txt
中的字符全部大寫,然後「將它們轉換爲兩個字符」,(A轉到C)(Z轉到B)。但是沒有任何內容正在打印,我主要關心的是如果我的數組正在被存儲並傳遞給不同的功能。爲什麼沒有打印? C編程
這是在congress.txt
:
國會不得制定法律尊重建立宗教或禁止自由行的;或者刪除言論自由或新聞自由;或和平集會的人民的權利,並請求政府糾正不滿。
#include<stdio.h>
int processFile(int *store);
int cipher(int *store, int *code);
int outputCode(int *code);
int main(void){
int store[300], code[300], i;
processFile(store);
cipher(store, code);
outputCode(code);
getchar();
return 0;
}
void processFile(int *store){
int i, a = 0;
FILE *f = fopen("congress.txt", "r");
for (i = 0; a != EOF;){
fscanf(f, "%c", &a); //store character in a
if (a <= 'Z' && a >= 'A'){ //store uppercase letters
store[i] = a;
i++;
}
if (a <= 'z' && a >= 'a'){ //store lowercase letters as uppercase
store[i] = a - 32;
i++;
}
}
i++;
store[i] = '\0';
}
void cipher(int *store, int *code){
int i;
for (i = 0; store[i] != 0; ++i){
if (store[i] <= 'X' && store[i] >= 'A'){ //tests to see if the letter is between A and X
code[i] = (char)(store[i] + 2); //shifts letter by two characters
}
if (store[i] >= 'Y' && store[i] <= 'Z'){
code[i] = (char)(store[i] - 24); //shifts Y and Z to A or B respectively
}
}
}
void outputCode(int *code){
int i, a, b;
for (a = 0; code[a] != 0; ++a){
if (!(a % 50)){ //makes a newline every 50 characters
printf("\n");
}
for (b = 0; code[a] != 0 && b <= 5; ++b){ //prints chunks of 5 characters then makes a space
printf("%c", code[a]);
}
printf(" ");
}
}
你應該明確提出終止''\ 0''你在'processFile'字符串的結尾... – Floris
你或許應該改變你的'回報; '返回0;'或者因爲函數必須返回一個'int'。另外,你的其他函數也應該返回一個值。如果你不需要,將返回類型改爲'void'。我建議編譯您的代碼,並啓用所有警告以儘早檢測這些微小的錯誤。 – Rufflewind
弗洛里斯會編輯我即將做到這一點? – ShaneBird