この質問は、私の Tally インタビューの質問で尋ねられました。助けてください。以下に示す C コードのエラーを教えてください。ありがたく思います。
int main()
{
char *p="Tally";
strcpy(p,"piyush");
printf("%s",p);
}
この行は間違っています
char *p="Tally";
ポインターには、書き込みが必要なアドレスがありません。たとえば、これを行うことができます
char t;
char *p;
p = &t;
*p='a';
o および char に文字列を入れることはできません
http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/#pointersを見るために素敵なリンクを編集して ください
インタビューの質問への回答 - このコードのエラーは次のとおりです。
1. No libraries included, hence printf and strcpy are undeclared functions
2. int main() has no return in the code. return 0; is required // gcc will throw a warning when -Wall flag is set
3. p is a string literal. Which can't be overwritten.
編集:
return は必要ないと言う方へ: -Wall フラグを設定して gcc でコンパイルした結果は次のとおりです。
Notra:Desktop Sukhvir$ gcc -Werror -Wall -g -o try try.c
cc1: warnings being treated as errors
try.c: In function ‘main’:
try.c:19: warning: control reaches end of non-void function
-Wall が設定されていない場合、コンパイラはこれを見落としますが、これを含めることをお勧めします。@AndreT gcc が警告をスローするというまさにその事実は、それが存在することを意図しているというヒントです。確かにコードはそれなしでもコンパイルできます..しかし、それは良い習慣にはなりません
編集2:
gcc が C99 標準の使用を強制されると、警告なしでコンパイルされます。したがって、私の投稿のポイント 2 は無視してください。