c語言輸入字元數組
A. c語言給字元型數組錄入數據
第一次進入循環時,在條件判斷語句處中斷,等待getchar返回
你輸入a後,必須按下回車鍵才能讓getchar接收到鍵盤輸入
這時,ch
=
(getchar()
==
'a')
//這里ch為真
這時while以ch的值為條件,判斷為真,進入循環內部,雖然你這里是沒有循環內部語句塊,但要理解while的流程,它在運行完內部語句塊後,又繼續檢查你的條件語句,ok,現在getchar直接返回了,因為上一次輸入時輸入了a,但也包括了回車鍵入的ascii碼10,所以這時ch
=
(10
==
'a'),即ch為假,循環退出,而你再輸出ch的話,也就是假,即0了
B. c語言中的字元數組的輸入
這個關繫到內存裡面的棧問題。。
當你
char
s[10];
時候,內存會在棧上分配地址,因為要位對齊,分配的是12個位元組的,內存,大至如下,其中
C0
FF
12
00
,是上一個棧地址。0012ffc0
CC
CC
CC
CC
CC
燙燙燙.
0012FF79
CC
CC
CC
CC
CC
CC
CC
燙燙燙.
0012FF80
C0
FF
12
00
輸入
12
個
時,
C0
就已經
佔用了,
會被清為
00
,但是
0012ff00
還是一個可以
使用的棧地址,
當13
個時,
ff
也給佔用了。。因此會出現
程序錯誤,
內存溢出
是要避免的,破壞數據,也會產生錯誤,
如果,你的程序時
,
int
i[10];
char
s[10];
scanf("%s",s);
printf("%s\n",s);
你再輸入
40個也沒事,s
會佔用i的地址,只要不破壞
棧地址就行了。不過溢出這個
還是要檢查的,程序
安全問題
C. C語言 計算出的數據輸入字元串數組
//計算字元串中相同字元的個數
#include "stdio.h"
#include "string.h"
int count_str_same(char * p,char ch);
int main()
{
int same_ch;
char a[100];
char c;
printf("請輸入字元串:");
gets(a);
printf("請輸入欲統計的重復字元:");
c = getchar();
same_ch = count_str_same(a,c);
printf("該字元串中字元%c重復%d次\n",c,same_ch);
return 0;
}
int count_str_same(char * p,char ch)
{
char * q = p;
int m = 0;
while(* q != '\0')
{
if(ch == * q)
m++;
q++;
}
return m;
}還可以將函數寫在頭文件中,並復制到include文件夾中,然後通過頭文件載入。
D. c語言中函數裡面怎麼輸入字元串數組
在C語言中,字元串是以字元數組方式保存的,於是字元串數組可以用二維字元數組存儲。
輸入時,每次輸入字元串數組的一個元素(一行),根據需要,使用scanf或gets進行輸入。
如:
char str[10][100]; //定義字元串數組,供10行,每行最多100個位元組數據。
int i;
for(i = 0; i < 10; i ++)
scanf("%s",str[i]);//輸入10行字元串數據。
E. c語言怎麼用scanf輸入字元串
c語言用scanf輸入字元串:
char s[300];
scanf("%s",s);
這個語句只能輸入不包含空格和跳格鍵的字元串並且以回車符結束輸入。
F. c語言字元串數組怎麼輸入和輸出呢
在C語言中,有兩個函數可以在控制台(顯示器)上輸出字元串,它們分別是:
puts():輸出字元串並自動換行,該函數只能輸出字元串。
printf():通過格式控制符%s輸出字元串,不能自動換行。除了字元串,printf() 還能輸出其他類型的數據。
這兩個函數相信大家已經非常熟悉了,這里不妨再演示一下,請看下面的代碼:
#include <stdio.h>
int main(){
char str[] = "http://c.biancheng.net";
printf("%s ", str); //通過字元串名字輸出
printf("%s ", "http://c.biancheng.net"); //直接輸出
puts(str); //通過字元串名字輸出
puts("http://c.biancheng.net"); //直接輸出
return 0;
}
運行結果:
http://c.biancheng.net
http://c.biancheng.net
http://c.biancheng.net
http://c.biancheng.net
注意,輸出字元串時只需要給出名字,不能帶後邊的[ ],例如,下面的兩種寫法都是錯誤的:
printf("%s ", str[]);
puts(str[10]);
(6)c語言輸入字元數組擴展閱讀:
由數字、字母、下劃線組成的一串字元。一般記為 s=「a1a2···an」(n>=0)。它是編程語言中表示文本的數據類型。在程序設計中,字元串(string)為符號或數值的一個連續序列,如符號串(一串字元)或二進制數字串(一串二進制數字)。
字元串在存儲上類似字元數組,它每一位單個元素都是能提取的,字元串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入數組。
G. c語言如何輸入帶字元的數組
設置該數組為字元型。例如:char
a[3][5]。這樣做的話數組當中的所有存儲的都被處理為字元。所以那個1,2,3之類的都變成字元了。不是數字。
如果想要讓1,2,3變成對應的數字,讓他們減去字元『0』即可。
H. 關於C語言字元串數組輸入問題
這當然不行啊,char *a[11];表示定義了11個字元型指針,每個指針還沒有指向有存儲空間的內存地址。
如果想要能運行需要申請內存加上
a[0]=(char*)malloc(100);
I. 如何在C語言中用scanf輸入數組
#include
main()
struct
int num;
char name[20];
char sex;
int age;
stu[5];
int i;
for(i=0;i<5;i++)
printf("請輸入信息 ");
scanf("%d",&stu[i].num);
scanf("%s",&stu[i].name);
scanf("%c",&stu[i].sex); //在%c之前加一個空格
scanf("%d",&stu[i].age);
for(i=0;i<5;i++)
printf( "*%s*",stu[i].name);
(9)c語言輸入字元數組擴展閱讀:
函數 scanf() 是從標准輸入流stdin[1](標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
函數的第一個參數是格式字元串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的信息並存儲於可變參數列表中對應的指針所指位置。每一個指針要求非空,並且與字元串中的格式符一一順次對應。
J. C語言字元數組輸入
#include<stdio.h>
intmain()
{
charss[100][100];
chars='1';
intn=0,m=0;
while(s!=' ')
{
s=getchar();
if(s!='')
ss[n][m++]=s;
else
{
ss[n++][m]='