Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 未找到命令,后跟分段故障11_C_Bash - Fatal编程技术网

C 未找到命令,后跟分段故障11

C 未找到命令,后跟分段故障11,c,bash,C,Bash,我试着做一个程序,可以得到如下输入 1 833N619DL ABQ 26 204 214 1250 1 1125N660DL ABQ 18 211 204 1250 1 1589N678DL ABQ 23 206 212 1250 2 833N659DL ABQ 18 204

我试着做一个程序,可以得到如下输入

   1     833N619DL  ABQ           26     204     214    1250
   1    1125N660DL  ABQ           18     211     204    1250
   1    1589N678DL  ABQ           23     206     212    1250
   2     833N659DL  ABQ           18     204     194    1250
   2    1125N656DL  ABQ           23     211     210    1250
   2    1589N665DN  ABQ           19     206     212    1250
   3     833N686DA  ABQ           23     204     204    1250
   3    1125N692DL  ABQ           27     211     216    1250
   3    1589N635DL  ABQ           26     206     210    1250
   4     833N688DL  ABQ           21     204     206    1250
   4    1125N660DL  ABQ           18     211     221    1250
   4    1589N631DL  ABQ           28     206     209    1250
此数据和输出仅输出输入中的数字(不包括数字和字母混合的列)

这是我的节目

#include <stdio.h>
#include <ctype.h>

#define MAXLINE 10000

char *itoa(int i);                  //convert integer to char array

main() {
    int temp= 0, i = 0, c, j = 0;
    char *a[MAXLINE];               //pointer array with uninitialized pointers

while((c = getchar()) != EOF)
    if(isdigit(c))
        temp = 10 * temp + c - '0';
    else if(!isalpha(c)) {
        a[i] = itoa(temp); 
        ++i;

        if(c == '\n') {
            *a[i] = '\n';
            j++;
        }
    }

    printf("Data is\n");

    for(int n = 0; n <= j; n++)
        printf("%s\n", a[n]);
}

char *itoa(int i) {

    char *s;

    while(i % 10 != 0) {
        *s++ = i / 10;            //save to s
        i = i % 10;               //removed saved part from i
}

    return s;
}
终端告诉我没有找到命令。 这是输出:

urw7RS:Desktop urw7rseeh8fr$ ./a.out
   1     833N619DL  ABQ           26     204     214    1250
   1    1125N660DL  ABQ           18     211     204    1250
   1    1589N678DL  ABQ           23     206     212    1250
   2     833N659DL  ABQ           18     204     194    1250
   2    1125N656DL  ABQ           23     211     210    1250
   2    1589N665DN  ABQ           19     206     212    1250
   3     833N686DA  ABQ           23     204     204    1250
   3    1125N692DL  ABQ           27     211     216    1250
   3    1589N635DL  ABQ           26     206     210    1250
   4     833N688DL  ABQ           21     204     206    1250
   4    1125N660DL  ABQ           18     211     221    1250
   4    1589N631DL  ABQ           28     206     209    1250
Segmentation fault: 11
urw7RS:Desktop urw7rseeh8fr$        1    1125N660DL  ABQ           18     211     204    1250
-bash: 1: command not found
urw7RS:Desktop urw7rseeh8fr$        1    1589N678DL  ABQ           23     206     212    1250
-bash: 1: command not found
urw7RS:Desktop urw7rseeh8fr$        2     833N659DL  ABQ           18     204     194    1250
-bash: 2: command not found
urw7RS:Desktop urw7rseeh8fr$        2    1125N656DL  ABQ           23     211     210    1250
-bash: 2: command not found
urw7RS:Desktop urw7rseeh8fr$        2    1589N665DN  ABQ           19     206     212    1250
-bash: 2: command not found
urw7RS:Desktop urw7rseeh8fr$        3     833N686DA  ABQ           23     204     204    1250
-bash: 3: command not found
urw7RS:Desktop urw7rseeh8fr$        3    1125N692DL  ABQ           27     211     216    1250
-bash: 3: command not found
urw7RS:Desktop urw7rseeh8fr$        3    1589N635DL  ABQ           26     206     210    1250
-bash: 3: command not found
urw7RS:Desktop urw7rseeh8fr$        4     833N688DL  ABQ           21     204     206    1250
-bash: 4: command not found
urw7RS:Desktop urw7rseeh8fr$        4    1125N660DL  ABQ           18     211     221    1250
-bash: 4: command not found
urw7RS:Desktop urw7rseeh8fr$        4    1589N631DL  ABQ           28     206     209    1250
-bash: 4: command not found
urw7RS:Desktop urw7rseeh8fr$ 

我做错了什么?

似乎终端是在解释数据而不是处理数据,所以它会尝试执行每一行,就像它是一个命令一样,而没有任何命令像文件每一行的前导数字那样。您确定正在执行程序而不是包含数据的文件吗


此外,所有指向字符串的
char*
指针都没有分配,因此您会得到
分段错误

在程序因分段错误而中止后,“未找到命令”来自shell。我猜您是用鼠标缓冲区粘贴了输入,而被中止的程序无法处理剩余的输入,因此它会被粘贴到shell中。
char*a[MAXLINE]//用于存储数据的指针数组
-->
char*a[MAXLINE]//带有未初始化指针的指针数组
并且您正在将int存储到其中)
*a[i]='\n'错误,它分配给未初始化的指针<代码>a[i]=itoa(温度)::同上您从未在itoa中初始化或为
s
提供存储。缩进您的代码@用户441343与您的问题无关,请选择
!isalpha(c)
~ isalpha(c)
。前者是逻辑求反,后者是位补。比如说,,
urw7RS:Desktop urw7rseeh8fr$ ./a.out
   1     833N619DL  ABQ           26     204     214    1250
   1    1125N660DL  ABQ           18     211     204    1250
   1    1589N678DL  ABQ           23     206     212    1250
   2     833N659DL  ABQ           18     204     194    1250
   2    1125N656DL  ABQ           23     211     210    1250
   2    1589N665DN  ABQ           19     206     212    1250
   3     833N686DA  ABQ           23     204     204    1250
   3    1125N692DL  ABQ           27     211     216    1250
   3    1589N635DL  ABQ           26     206     210    1250
   4     833N688DL  ABQ           21     204     206    1250
   4    1125N660DL  ABQ           18     211     221    1250
   4    1589N631DL  ABQ           28     206     209    1250
Segmentation fault: 11
urw7RS:Desktop urw7rseeh8fr$        1    1125N660DL  ABQ           18     211     204    1250
-bash: 1: command not found
urw7RS:Desktop urw7rseeh8fr$        1    1589N678DL  ABQ           23     206     212    1250
-bash: 1: command not found
urw7RS:Desktop urw7rseeh8fr$        2     833N659DL  ABQ           18     204     194    1250
-bash: 2: command not found
urw7RS:Desktop urw7rseeh8fr$        2    1125N656DL  ABQ           23     211     210    1250
-bash: 2: command not found
urw7RS:Desktop urw7rseeh8fr$        2    1589N665DN  ABQ           19     206     212    1250
-bash: 2: command not found
urw7RS:Desktop urw7rseeh8fr$        3     833N686DA  ABQ           23     204     204    1250
-bash: 3: command not found
urw7RS:Desktop urw7rseeh8fr$        3    1125N692DL  ABQ           27     211     216    1250
-bash: 3: command not found
urw7RS:Desktop urw7rseeh8fr$        3    1589N635DL  ABQ           26     206     210    1250
-bash: 3: command not found
urw7RS:Desktop urw7rseeh8fr$        4     833N688DL  ABQ           21     204     206    1250
-bash: 4: command not found
urw7RS:Desktop urw7rseeh8fr$        4    1125N660DL  ABQ           18     211     221    1250
-bash: 4: command not found
urw7RS:Desktop urw7rseeh8fr$        4    1589N631DL  ABQ           28     206     209    1250
-bash: 4: command not found
urw7RS:Desktop urw7rseeh8fr$