-8

この質問は、私の Tally インタビューの質問で尋ねられました。助けてください。以下に示す C コードのエラーを教えてください。ありがたく思います。

int main()
{
    char *p="Tally";
    strcpy(p,"piyush");
    printf("%s",p);
}
4

7 に答える 7

0

この行は間違っています

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を見るために素敵なリンクを編集して ください

于 2013-10-18T14:28:33.557 に答える
0

インタビューの質問への回答 - このコードのエラーは次のとおりです。

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 は無視してください。

于 2013-10-18T14:33:16.570 に答える