所以我想发送像
这样的输入ls -l | ./a.out
到以下程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
char virtualLs[100];
char eachLineOfLsInArray[100][100];
scanf("%[^\t]", virtualLs);
char *eachLineOfLs;
eachLineOfLs = strtok(virtualLs, "\n");
int loopCounterForStuffing;
loopCounterForStuffing = 0;
while (eachLineOfLs != NULL)
{
strcpy(eachLineOfLsInArray[loopCounterForStuffing], eachLineOfLs);
eachLineOfLs = strtok(NULL, "\n");
++loopCounterForStuffing;
}
char newLsArray[100][sizeof(eachLineOfLsInArray) / sizeof(char)];
int i;
for(i = 0; i < sizeof(eachLineOfLsInArray) / sizeof(char); i++)
{
char *array[10];
int k=0;
array[k] = strtok(eachLineOfLsInArray[i], " ");
while(array[k] != NULL)
{
array[++k] = strtok(NULL, " ");
}
newLsArray[i] = array;
printf ("res[%d] = %s\n", i, array[i]);
}
我在编译中收到以下错误消息
largest.c:31:17: error: array type 'char [10000]' is not assignable
newLsArray[i] = array;
~~~~~~~~~~~~~ ^
1 error generated.
该程序的目的是将每一行放入一个包含其单词作为数组的数组中。
答案 0 :(得分:1)
使用strcpy
功能:
而不是
newLsArray[i] = array;
写
strcpy(newLsArray[i], array);
答案 1 :(得分:1)
当您定义类似char [10]的数组时,其类型为char [10]而不是char *,因此array
的类型为char [10],而newLsArray[i]
的类型为{{1} }这是不同的,所以你得到一个类型错误,你可以使用char [sizeof(eachLineOfLsInArray) / sizeof(char)]
或使用指针和strcpy
命令,这样行malloc
将起作用。
要使用指针,您需要将数组定义为char *,将二维数组定义为char **并相应地对其进行malloc。