在2D数组中一次访问一个char

时间:2012-02-03 01:59:12

标签: c

我正在尝试逐个字符检查,因此我需要在2D数组中一次访问一个字符。我尝试使用双指针(例如:**p),但我的程序崩溃了。所以我使用*p,但它给了我垃圾。

这是我的代码:

FILE *in;
in = fopen("thefiles.txt", "r");
if (!in) {
    printf("Failed to open input file\n");
    exit(1);
}

int j;
char phrase[N_STRINGS][MAX_LENGTH_OF_A_SINGLE_STRING]; 
char string[MAX_LENGTH_OF_A_SINGLE_STRING];

for( j = 0; j < N_STRINGS; j++ ) 
{
    fscanf( in, "%s", string );
    strcpy( phrase[j], string );
}

char *p;    
*p = phrase[0][0];
// Trying to use a pointer to point at the beginning(?) of the array

printf( "P = %s", p);
// After printing it out, I see that it gives me rubbish

非常感谢!

编辑:

好吧,我想我刚解决了自己的问题。哈! 我只需要:

char p = phrase[0][0];  

首先不应该搞乱指针:P

1 个答案:

答案 0 :(得分:1)

假设短语是单词,这是一个应该做你想要的示例程序。如果你想要的只是看到存储在文件中的第一个单词的值。

#include <stdio.h>

#define N_STRINGS   2
#define MAX_LENGTH_OF_A_SINGLE_STRING   1024
int main()
{
FILE *in;
in = fopen("thefiles.txt", "r");
if (!in) {
    printf("Failed to open input file\n");
    exit(1);
}

int j;
char phrase[N_STRINGS][MAX_LENGTH_OF_A_SINGLE_STRING];
char string[MAX_LENGTH_OF_A_SINGLE_STRING];

for( j = 0; j < N_STRINGS; j++ )
{
    fscanf( in, "%s", string );
    strcpy( phrase[j], string );
}

char *p = phrase[0];
printf( "P = %s", p);

return 0;
}