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$