我想在c中實現重複的cat函數。我遇到了分段錯誤,我無法找到原因。從命令行讀取參數時出現分段錯誤
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
char* s; /* input string */
int c;
if(argc==1){
while (gets(s)){
puts(s);
}
}
else{
FILE *file = fopen("./argv[1]", "r");
while((c=fgetc(file))!=EOF){
fputc(c,stdout);
}
fclose(file);
}
return 0;
}
首先,你應該調試你的程序。如果你不知道該怎麼做,這是一個完美的時間學習。這幾乎總是會立即爲您提供錯誤信息,從而爲您節省長時間的搜索時間。其次,你從來沒有爲s分配內存。最後,你想打開'./argv [1]',而不是'「./argv[1]」'。 – Zeta
啊是的,今天早些時候,每天我寫東西到地址什麼也沒有分配問題。太本地化了,投票結束。 – Lundin
@Lundin是的,恐怕在今天的日常工作中還有更多的這個問題在SO ... -.- – 2013-04-16 06:33:05