簡體   English   中英

strcopy崩潰的C程序

[英]strcopy crashing c program

我的程序從命令行參數到名稱獲取名稱和年齡,並將每個名稱和年齡存儲為結構的元素。 我的問題是我運行程序時strcpy崩潰了。 這是我的代碼,我將不勝感激。

 #include<stdio.h>
 #include<stdlib.h>
 #include<string.h>

 typedef struct {
     char name[80];
     int age;
 } person;

int main(int argc, char *argv[]){

if (argc == 1 || argc % 2 == 0) {
    printf("Invalid arguments.\n Usage: %s name1 age1 name2 age2 ...", argv[0]);
    return 0;
}

person people[argc/2];
int i;

for (i = 0; i < argc; i++)
    strcpy(people[i].name, argv[i+1]);

問題出在這里:

for (i = 0; i<argc; i++)
strcpy(people[i].name, argv[i+1]);

您有兩個超出范圍的數組引用:

  1. 您從0..argc-1循環,因此您從1..argc-即引用argv。 超出范圍。

  2. 另外,您正在創建長度為argc / 2的數組,但您引用的是元素0 ... argc-即。 另一個數組溢出。

循環應類似於:

for (i = 0; i<argc/2; i++)
  strcpy(people[i].name, argv[i*2+1]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM