Szegmens hiba – de miért?

Kezdőlap Fórumok Programozás Szegmens hiba – de miért?

10 bejegyzés megtekintése - 61-70 / 77
  • Szerző
    Bejegyzés
  • #2164578
    gabaman
    Felhasználó

      Ez is horror:

      Code:
      char *nc_filetype (struct stat *st) {
          char *result;

          result = malloc(30);
          sprintf(result,””);
          if (S_ISDIR(st->st_mode)) {
              sprintf(result,”könyvtár”);
          } else if (S_ISCHR(st->st_mode)) {
              sprintf(result,”karakter eszköz”);
          } else if (S_ISBLK(st->st_mode)) {
              sprintf(result,”blokkeszköz”);
          } else if (S_ISREG(st->st_mode)) {
              sprintf(result,”szabályos”);
          } else if (S_ISFIFO(st->st_mode)) {
              sprintf(result,”fifo”);
          } else if (S_ISLNK(st->st_mode)) {
              sprintf(result,”link”);
          } else if (S_ISSOCK(st->st_mode)) {
              sprintf(result,”socket”);
          } else sprintf(result,”pass”);

          return result;
      }

      Így jobb:

      Code:
      const char *nc_filetype (struct stat *st) {
          if (S_ISDIR(st->st_mode)) {
              return „könyvtár”;
          } else if (S_ISCHR(st->st_mode)) {
              return „karakter eszköz”;
          } else if (S_ISBLK(st->st_mode)) {
              return „blokkeszköz”;
          } else if (S_ISREG(st->st_mode)) {
              return „szabályos”;
          } else if (S_ISFIFO(st->st_mode)) {
              return „fifo”;
          } else if (S_ISLNK(st->st_mode)) {
              return „link”;
          } else if (S_ISSOCK(st->st_mode)) {
              return „socket”;
          }

          return „pass”;
      }

      #2164579
      gabaman
      Felhasználó

        Ez is horror:

        Code:
        char *nc_filetype (struct stat *st) {
            char *result;

            result = malloc(30);
            sprintf(result,””);
            if (S_ISDIR(st->st_mode)) {
                sprintf(result,”könyvtár”);
            } else if (S_ISCHR(st->st_mode)) {
                sprintf(result,”karakter eszköz”);
            } else if (S_ISBLK(st->st_mode)) {
                sprintf(result,”blokkeszköz”);
            } else if (S_ISREG(st->st_mode)) {
                sprintf(result,”szabályos”);
            } else if (S_ISFIFO(st->st_mode)) {
                sprintf(result,”fifo”);
            } else if (S_ISLNK(st->st_mode)) {
                sprintf(result,”link”);
            } else if (S_ISSOCK(st->st_mode)) {
                sprintf(result,”socket”);
            } else sprintf(result,”pass”);

            return result;
        }

        Így jobb:

        Code:
        const char *nc_filetype (struct stat *st) {
            if (S_ISDIR(st->st_mode)) {
                return „könyvtár”;
            } else if (S_ISCHR(st->st_mode)) {
                return „karakter eszköz”;
            } else if (S_ISBLK(st->st_mode)) {
                return „blokkeszköz”;
            } else if (S_ISREG(st->st_mode)) {
                return „szabályos”;
            } else if (S_ISFIFO(st->st_mode)) {
                return „fifo”;
            } else if (S_ISLNK(st->st_mode)) {
                return „link”;
            } else if (S_ISSOCK(st->st_mode)) {
                return „socket”;
            }

            return „pass”;
        }

        #2164580
        uzsolt
        Felhasználó

          Na, akkor megint tanultam valamit. Akkor megérte eddig fennmaradnom 🙂

          #2164581
          uzsolt
          Felhasználó

            Na, akkor megint tanultam valamit. Akkor megérte eddig fennmaradnom 🙂

            #2164582
            pointux
            Felhasználó
              Code:
              const char *nc_filetype (struct stat *st) {
                  if (S_ISDIR(st->st_mode)) {
                      return „könyvtár”;
                  } else if (S_ISCHR(st->st_mode)) {
                      return „karakter eszköz”;
                  } else if (S_ISBLK(st->st_mode)) {
                      return „blokkeszköz”;
                  } else if (S_ISREG(st->st_mode)) {
                      return „szabályos”;
                  } else if (S_ISFIFO(st->st_mode)) {
                      return „fifo”;
                  } else if (S_ISLNK(st->st_mode)) {
                      return „link”;
                  } else if (S_ISSOCK(st->st_mode)) {
                      return „socket”;
                  }

                  return „pass”;
              }

              Még ez is túlzás, mert a return után nincs értelme az else-nek sem.

              Code:
              const char *nc_filetype ( struct stat *st ) {
                  if ( S_ISDIR ( st->st_mode ) )
                      return „könyvtár”;
                  if ( S_ISCHR ( st->st_mode ) )
                      return „karakter eszköz”;
                  if ( S_ISBLK ( st->st_mode ) )
                      return „blokkeszköz”;
                  if ( S_ISREG ( st->st_mode ) )
                      return „szabályos”;
                  if ( S_ISFIFO ( st->st_mode ) )
                      return „fifo”;
                  if ( S_ISLNK ( st->st_mode ) )
                      return „link”;
                  if ( S_ISSOCK ( st->st_mode ) )
                      return „socket”;

                  return „pass”;
              }

              #2164583
              pointux
              Felhasználó
                Code:
                const char *nc_filetype (struct stat *st) {
                    if (S_ISDIR(st->st_mode)) {
                        return „könyvtár”;
                    } else if (S_ISCHR(st->st_mode)) {
                        return „karakter eszköz”;
                    } else if (S_ISBLK(st->st_mode)) {
                        return „blokkeszköz”;
                    } else if (S_ISREG(st->st_mode)) {
                        return „szabályos”;
                    } else if (S_ISFIFO(st->st_mode)) {
                        return „fifo”;
                    } else if (S_ISLNK(st->st_mode)) {
                        return „link”;
                    } else if (S_ISSOCK(st->st_mode)) {
                        return „socket”;
                    }

                    return „pass”;
                }

                Még ez is túlzás, mert a return után nincs értelme az else-nek sem.

                Code:
                const char *nc_filetype ( struct stat *st ) {
                    if ( S_ISDIR ( st->st_mode ) )
                        return „könyvtár”;
                    if ( S_ISCHR ( st->st_mode ) )
                        return „karakter eszköz”;
                    if ( S_ISBLK ( st->st_mode ) )
                        return „blokkeszköz”;
                    if ( S_ISREG ( st->st_mode ) )
                        return „szabályos”;
                    if ( S_ISFIFO ( st->st_mode ) )
                        return „fifo”;
                    if ( S_ISLNK ( st->st_mode ) )
                        return „link”;
                    if ( S_ISSOCK ( st->st_mode ) )
                        return „socket”;

                    return „pass”;
                }

                #2164584
                gabaman
                Felhasználó

                  Ha már megemlítetted a sebességet, akkor legyen már gyors is:

                  Code:
                  const char *nc_filetype ( struct stat *st ) {
                      switch ( st->st_mode & S_IFMT ) {
                        case S_IFDIR:
                          return „könyvtár”;
                        case S_IFCHR:
                          return „karakter eszköz”;
                        case S_IFBLK:
                          return „blokkeszköz”;
                        case S_IFREG:
                          return „szabályos”;
                        case S_IFIFO:
                          return „fifo”;
                        case S_IFLNK:
                          return „link”;
                        case S_IFSOCK:
                          return „socket”;
                        default:
                          break;
                      }
                      return „pass”;
                  }
                  #2164585
                  gabaman
                  Felhasználó

                    Ha már megemlítetted a sebességet, akkor legyen már gyors is:

                    Code:
                    const char *nc_filetype ( struct stat *st ) {
                        switch ( st->st_mode & S_IFMT ) {
                          case S_IFDIR:
                            return „könyvtár”;
                          case S_IFCHR:
                            return „karakter eszköz”;
                          case S_IFBLK:
                            return „blokkeszköz”;
                          case S_IFREG:
                            return „szabályos”;
                          case S_IFIFO:
                            return „fifo”;
                          case S_IFLNK:
                            return „link”;
                          case S_IFSOCK:
                            return „socket”;
                          default:
                            break;
                        }
                        return „pass”;
                    }
                    #2164586
                    pointux
                    Felhasználó

                      Azt hiszem a stat-ban is ezt a példát adja… vagy valami ilyesmit. 🙂
                      Igen, csak ott közvetlenül switch-ben printf-fel.
                      Hát igen érdemes elolvasni – ugye – a man oldalakat. :)))

                      #2164587
                      pointux
                      Felhasználó

                        Azt hiszem a stat-ban is ezt a példát adja… vagy valami ilyesmit. 🙂
                        Igen, csak ott közvetlenül switch-ben printf-fel.
                        Hát igen érdemes elolvasni – ugye – a man oldalakat. :)))

                      10 bejegyzés megtekintése - 61-70 / 77
                      • Be kell jelentkezni a hozzászóláshoz.