ABORT TRAP 6 C - MAC端末のエラーエラー -- c フィールド 関連 問題

Abort trap 6 error in C - mac terminal












3
vote

問題

日本語

私はCを学び、最近私はYouTubeからチュートリアルを試していました、そして私はこのコードを実行していましたが、それはなぜ私はそれをターミナルで実行するときには、エラーが発生しました、 "中止トラップ:6 "

私はこのチュートリアルをフォローしていました: https://youtu.be/7f-q2ovbykk?list = PL6GX4CWL9DGAKIXV8YR6NHGJ9VLCJYYMQ

<事前> <コード> #include <stdio.h> #include <stdlib.h> #include <string.h> int main () { char name[15] = "John Snow"; printf("My name is %s ", name); name[2] = 'z'; printf("My name is %s ", name); char food[] ="pizza"; printf("The best food is %s ", food); strcpy(food, "bacon"); printf("The best food is %s ", food); return 0; }
英語

I'm learning C and recently I was trying some tutorials from youtube, and I was running this code, but it doesnt work I don't know why... when i run it on Terminal, gives an error "Abort trap: 6"

I was following this tutorial : https://youtu.be/7F-Q2oVBYKk?list=PL6gx4Cwl9DGAKIXv8Yr6nhGJ9Vlcjyymq

#include <stdio.h> #include <stdlib.h> #include <string.h>   int main () {   char name[15] = "John Snow";   printf("My name is %s ", name);    name[2] = 'z';                      printf("My name is %s ", name);    char food[] ="pizza";   printf("The best food is %s  ", food);    strcpy(food, "bacon");   printf("The best food is %s  ", food);    return 0; } 
</div
  
       
       

回答リスト

4
 
vote

エラーはあなたが所有していないメモリに書いていることを意味します。あなたがあなたが食べ物に指定したものより長い文字列をコピーしようとすると起こるでしょう( 'pizza')。この場合、文字列定数に割り当てられたメモリの場所に文字列をコピーしているCOSでもかまいません。

代わりにこれを試してください: -

<事前> <コード> char *food = malloc(sizeof(char)*6); strcpy(food, "pizza"); printf("The best food is %s ", food); strcpy(food, "bacon");` printf("The best food is %s ", food);
 

The error means you are writing to memory you don't own. Will likely happen if you try to copy a string longer than the one you specified for food ('pizza'). In this case it could be cos you are copying the string into memory location assigned to a string constant.

try this instead:-

char *food = malloc(sizeof(char)*6);  strcpy(food, "pizza");  printf("The best food is %s  ", food);   strcpy(food, "bacon");` printf("The best food is %s  ", food); 
</div
 
 

関連する質問

1  共用体クエリを使用してODBCソースから複数行を取得する  ( Retrieve multiple rows from an odbc source with a union query ) 
複数行をODBCソースからListViewコントロールに取得しています。 SIMPLE SELECTの場合は、SQL_SCROLLABLEのステートメント属性とうまく機能します。 Unionクエリ(2つの選択を含む)でこれを行うにはどうすればよいですか? 最も...

20  ロックボックスオーディオフォーマット  ( Rockbox audio format ) 
rb->pcm_play_data() のコールバックを指定しますか? ...

63  DLLによって公開されたすべての機能を見つける方法はありますか  ( Is there a way to find all the functions exposed by a dll ) 
DLLの関数名にマッピングするすべての文字列を取得する方法を検索しています。 私はあなたがgetProcaddressを呼び出すことができるこのすべての文字列によって意味します。シンボル(文字列)の16進数のダンプがある場合は、私がそれらの名前を取得するた...

4  Galoisフィールド演算でy = x * xの最適化  ( Optimize y xx in galois field arithmetic ) 
GF(8)を超える乗算をするためのこのCコードを持っています(8): <事前> <コード> int32_t GaloisMultiply (int32_t a, int32_t b) { int32_t i; int32_t mask = ...

164  z / ONのC ++でC Socket APIを使用する方法  ( How to use the c socket api in c on z os ) 
z / OS上のC ++でC ++で正しく機能するようになる問題が発生しました。 sys/socket.h を含めていますが、 AF_INET が定義されていないことを伝えます。 私は明白なものを欠いているか、z / OSにいることに関連していることです...

35  ANSI(C89 / 90)Cのバイトを表すために使用するタイプ?  ( Type to use to represent a byte in ansi c89 90 c ) 
ANSI(C89 / 90)Cのバイトを表す標準 - 不満の方法はありますか?私は、ほとんどの場合、Charがバイトであることを知っていますが、私の理解はこれが事件になることを保証されていないということです。また、C99規格にはSTDINT.Hがありますが、...

17  Realloc()で2重の空きエラーまたは破損エラーを獲得しているのはなぜですか。  ( Why am i getting a double free or corruption error with realloc ) 
C内の文字列置換関数を作成しようとしました。これは、 malloc() を使用して割り当てられている char * で機能します。スタート文字列内の文字ではなく文字列を見つけて置き換えることが少し異なります。 検索と置換文字列が同じ長さ(または置換文字列が検...

4  Cのテストフレームワーク[クローズ]  ( Testing frameworks for c ) 
現在立つにつれて、この質問は私たちのQ&AMPにとって良いフィットではありません。フォーマット。私たちは事実、参考文献、または専門知識によって支持されることを期待していますが、この質問は...

13  静的イニシャライザ、つまりmain()の前にgetenv()を使用しても安全ですか?  ( Is it safe to use getenv in static initializers that is before main ) 
Stevens 、および POSIXプログラマーズガイド、そして私が見つけることができる最高のものです プロセスが開始されたときに Enviroment という文字列の配列が利用可能になります。 この配列は、外部変数<コード> environ によっ...

36  GTK Messageboxの実装  ( Gtk implementation of messagebox ) 
GTKを使用してWin32の REPLACE INTO1 を実装しようとしています。アプリはsdl / openglを使用するので、これはGTKアプリではありません。 <コード> REPLACE INTO3 関数内の初期化( REPLACE INTO2 )...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有