Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

346
Views
falla de segmentación de strtok, solo da una falla de segmentación cuando la primera línea del archivo de entrada está en blanco

Estoy usando AIX. Hay varias publicaciones de fallas de segmentación con strtok pero no pude encontrar ninguna que me ayude.

Estoy escribiendo un programa ac y quiero leer un archivo en el programa y luego ordenar esta línea (solo necesito los minutos y los segundos al final de la segunda línea).

aquí hay un fragmento de mi código:

 FILE *timeFile; int x, timeElapsed; char line[1000], *temp; int main() { x = 0; timeFile= fopen("time.txt", "r"); if(timeFile==NULL) { printf("\nerror opening file time.txt\n"); printf("\nPlease update system time manually\n"); return 1;//error } while( x<10 && fgets(line, sizeof(line), timeFile)!= NULL) { if( x==1 )//we need data from the second line { temp = strtok(line, " "); printf("\nline: %s",line);//the Output here is as expected 'line: real' printf("\ntemp: %s",temp);//the error occurs here at temp break; } x++; } }

El archivo que estoy tratando de leer tiene esto dentro:

 real 0m1.25s user 0m0.09s sys 0m0.02s

La primera línea está en blanco (creo que solo es un carácter de retorno) y 'real 0m1.25s' es la segunda línea. Quiero leer sólo la segunda línea. El error ocurre cuando trato de leer la variable temporal.

Lo gracioso es que he usado casi el mismo código para el mismo trabajo en otro programa y funcionó. La única diferencia era que en el archivo de entrada del proyecto anterior no había líneas en blanco ni tabulaciones. Así que estoy confundido por favor ayuda.

PD: estoy usando un teclado alemán, por lo que escribe en mayúsculas las palabras por sí solo, lo siento.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Utilice sscanf() en su lugar. Trate de evitar strtok() a toda costa a menos que sea absolutamente necesario.

Aquí hay un enlace a la fuente que puede resultarle útil.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!