c語言字元串二維數組
① c語言怎麼用二維數組輸入行數不確定的字元串
首先】是多行字元串的輸入和保存。可以:
開設一個字元串數組如下,其中N定義最多可記錄多少行,M定義每行可保存多少個字元,改變#define定義可以調整這兩個數據
#define
N
1024
//最多1024行
#define
M
256
//每行最多存儲255個字元
char
input[N][M];
實際輸入一行可以用gets函數實現,判斷gets函數的返回值可知道是否結束輸入(比如輸入Ctrl+Z的組合鍵結束),每輸入一行,記錄的行數加1,最後可得到實際輸入的行數和按行號順序保存在input數組中的所有字元串。
【然後】是倒序輸出字元串,每個字元串倒序輸出。可以:
按照倒序給出input的第1維下標,每行輸出一個字元串,在輸出每個字元串時,找到字元串末尾(都是以字元'\'結束的),然後輸出一個字元再往回倒退一個字元,直至輸出完整個字元串。如:
for
(
i=n-1;i>=0;i--
)
{
nn=0;
while
(
input[i][nn]
)
nn++;
for
(
j=nn-1;j>=0;j--
)
printf("%c",input[i][j]);
printf("\n");
}
② c語言中如何定義字元串,是用二維數組實現的嗎
一維和二維的都可以;
一維的情況如下:
1,char string0[10];
2,char string1[]="prison break";
3,char string2[100]="michael scofield";
1句表示定義個長度為10的字元串,但未賦值,2句表示定義了一個字元數組string1,並進行初始化,使得其長度自動為13(字元串」prison break"中的字元個數加上結尾的'\0'),3句定義了一個有100個元素的字元數組string2,並初始化了17個元素("michael scofield";加上結尾的'\0');
二維的情況如下:
1,char string3[6][30];
2,char string3[6][30]={"joy","phosee","monses","chandele","ross","rather"};
此句表示有6個字元串,每個字元串的長度為30,每個字元串的初始值與「joy","phosee","monses","chandele","ross","rather"相對應;
③ C語言把一些字元串存入一個二維數組(在線等)
猜測:你的目的是讀文件中的多行出來,然後分行存儲二維數組,最後按每行再輸出出來;
解決方法:
如果是讀多行,正常情況下應該是每行每行往外讀,而不是一下子全讀出來。
用一個for循環,每次調fgets函數,只讀一行。
讀一行存一行。
然後再for循環往外cout。
fgets每次讀一行,
fscanf則要自己定規則,你很難判斷行的結束符/n/a
建議:
//1. 如是c的話不要引用#include<iostream>,如果c++的話不要引用#include<stdio.h>
//2. 因為是強制讀100個,並且只能讀100個。如果文件中總數小於100,則可以正常列印出來;如果大於100,則只能輸出100個;猜測你的文件中第一行應該是多於100個字元的;
//3. 學會單步跟蹤加細心
//4. 多用VC6自帶的幫助文檔(安裝完CSDN後按F1可彈出)
④ c語言二維字元數組
二維字元數組一般用於存儲和處理多個字元串,二維字元數組中的每一行均可存儲表示一個字元串。
二維字元數組的定義
二維字元數組的定義格式為:
char 數組名[第一維大小][第二維大小];
如:
char c[3][10]; //定義了一個3行10列的二維字元數組c
⑤ 跪求C語言中怎樣把很多字元串存入二維數組中,並用指針輸出,急用~謝謝
給你舉個例子,這里str就是一個二維數組,我手動輸入10個字元串存入該數組,然後用該二維數組的行指針輸出
#include<stdio.h>
#include<string.h>
void main()
{
char str[10][20];
int i;
for(i=0;i<10;i++)
gets(*(str+i));
for(i=0;i<10;i++)
puts(*(str+i));
}
⑥ C語言字元串二維數組引用可以省略列下標嗎
代碼語法上是沒有問題的。
(1)c語言的二維數組的每一行都可以看成一個一維數組,如書上的name就可以看成5個一維數組組成的。如果數組恰好定義成char類型,那這些一維數組又可以看成字元串。
(2)代碼一開始就是用strcpy函數對這5個字元串賦值。每行的大小隻有10個位元組,因此它還要檢測輸入是否越界。老師應該說過,c字元串的結尾要有個結束符0,所以這里的檢測直覺上是有問題的,>10改成>=10更好一些。
(3)訪問這些一維數組最直接的方法就是書上的做法。name[i]的意思就是第i行的起始地址。在vs編譯器上還允許
char *p = name[i];
char (*p)[10] = &name[i];
char (*p)[10] = (char (*)[10])name[i];
可能有些編譯器不完全支持
⑦ c語言中,怎麼輸入多組字元串,放在二維數組里
1、字元輸出,當要向輸出設備(顯示屏、列印機等)輸出字元時,可以用 c 格式描述符控制。如下所示代碼即輸出字元ch (a) 。
⑧ C語言如何定義指針指向字元型二維數組
使用指針變數訪問二維數組的任意一個元素的方法:
1.使用列指針:定義一個列指針p,讓它指向二維數組的第0個元素
int a[3][4];
int *p;
p=&a[0][0];
//因為a[0]是第0行的數組名,所以p=&a[0][0]相當於p=a[0],因為a[i][j]前面共有i*4+j個元素
該二維數組的任意i行j列元素可表示為*(p+i*4+j)。
2.使用行指針:定義一個行指針p,讓它指向二維數組的第0行
int a[3][4];
int (*p)[4];
p=a; //也可以為p=&a[0];
其中* ( *(p+i)+j)表示任意一個i行j列的元素。
(8)c語言字元串二維數組擴展閱讀:
數組的使用規則:
1.可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
2.只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。
3.如不給可初始化的數組賦初值,則全部元素均為0值。
4.如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
網路-數組